fxruby 1.6.29-x86-mingw32 → 1.6.30-x86-mingw32

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +11 -0
  3. data/Manifest.txt +5 -0
  4. data/Rakefile +8 -2
  5. data/examples/gltest.rb +0 -7
  6. data/examples/groupbox.rb +5 -3
  7. data/examples/thread.rb +55 -0
  8. data/ext/fox16_c/FXRbApp.cpp +67 -5
  9. data/ext/fox16_c/FXRuby.cpp +142 -110
  10. data/ext/fox16_c/extconf.rb +36 -28
  11. data/ext/fox16_c/gvl_wrappers.cpp +12 -0
  12. data/ext/fox16_c/include/FXRbApp.h +41 -6
  13. data/ext/fox16_c/include/FXRbBitmap.h +12 -12
  14. data/ext/fox16_c/include/FXRbCommon.h +3 -0
  15. data/ext/fox16_c/include/FXRbCursor.h +2 -2
  16. data/ext/fox16_c/include/FXRbDC.h +62 -62
  17. data/ext/fox16_c/include/FXRbDialogBox.h +2 -2
  18. data/ext/fox16_c/include/FXRbDockBar.h +3 -3
  19. data/ext/fox16_c/include/FXRbDockSite.h +4 -4
  20. data/ext/fox16_c/include/FXRbDrawable.h +1 -1
  21. data/ext/fox16_c/include/FXRbFileDict.h +3 -3
  22. data/ext/fox16_c/include/FXRbFoldingList.h +28 -28
  23. data/ext/fox16_c/include/FXRbFont.h +18 -18
  24. data/ext/fox16_c/include/FXRbGLCanvas.h +4 -4
  25. data/ext/fox16_c/include/FXRbGLObject.h +8 -8
  26. data/ext/fox16_c/include/FXRbGLShape.h +1 -1
  27. data/ext/fox16_c/include/FXRbGLViewer.h +3 -3
  28. data/ext/fox16_c/include/FXRbHeader.h +7 -7
  29. data/ext/fox16_c/include/FXRbIconList.h +28 -28
  30. data/ext/fox16_c/include/FXRbIconSource.h +12 -12
  31. data/ext/fox16_c/include/FXRbId.h +3 -3
  32. data/ext/fox16_c/include/FXRbImage.h +19 -19
  33. data/ext/fox16_c/include/FXRbList.h +21 -21
  34. data/ext/fox16_c/include/FXRbListBox.h +1 -1
  35. data/ext/fox16_c/include/FXRbMDIChild.h +4 -4
  36. data/ext/fox16_c/include/FXRbMDIClient.h +4 -4
  37. data/ext/fox16_c/include/FXRbObject.h +2 -2
  38. data/ext/fox16_c/include/FXRbPopup.h +2 -2
  39. data/ext/fox16_c/include/FXRbRealSpinner.h +1 -1
  40. data/ext/fox16_c/include/FXRbScrollArea.h +4 -4
  41. data/ext/fox16_c/include/FXRbShutter.h +1 -1
  42. data/ext/fox16_c/include/FXRbSpinner.h +1 -1
  43. data/ext/fox16_c/include/FXRbStream.h +3 -3
  44. data/ext/fox16_c/include/FXRbTabBar.h +1 -1
  45. data/ext/fox16_c/include/FXRbTable.h +53 -53
  46. data/ext/fox16_c/include/FXRbText.h +23 -23
  47. data/ext/fox16_c/include/FXRbTopWindow.h +5 -5
  48. data/ext/fox16_c/include/FXRbTranslator.h +1 -1
  49. data/ext/fox16_c/include/FXRbTreeList.h +28 -28
  50. data/ext/fox16_c/include/FXRbTreeListBox.h +1 -1
  51. data/ext/fox16_c/include/FXRbWindow.h +31 -31
  52. data/ext/fox16_c/include/FXRuby.h +200 -94
  53. data/ext/fox16_c/include/gvl_wrappers.h +594 -0
  54. data/lib/1.8/fox16_c.so +0 -0
  55. data/lib/1.9/fox16_c.so +0 -0
  56. data/lib/2.0/fox16_c.so +0 -0
  57. data/lib/2.1/fox16_c.so +0 -0
  58. data/lib/2.2/fox16_c.so +0 -0
  59. data/lib/fox16.rb +1 -0
  60. data/lib/fox16/thread.rb +51 -0
  61. data/lib/fox16/version.rb +1 -1
  62. data/lib/x86-mingw32/libFOX-1.6-0.dll +0 -0
  63. data/lib/x86-mingw32/libfxscintilla-20.dll +0 -0
  64. data/lib/x86-mingw32/libgcc_s_sjlj-1.dll +0 -0
  65. data/lib/x86-mingw32/libjpeg-8.dll +0 -0
  66. data/lib/x86-mingw32/libpng15-15.dll +0 -0
  67. data/lib/x86-mingw32/libstdc++-6.dll +0 -0
  68. data/lib/x86-mingw32/libtiff-5.dll +0 -0
  69. data/lib/x86-mingw32/libwinpthread-1.dll +0 -0
  70. data/lib/x86-mingw32/zlib1.dll +0 -0
  71. data/rdoc-sources/FXApp.rb +5 -0
  72. data/rdoc-sources/FXId.rb +5 -0
  73. data/swig-interfaces/FXApp.i +14 -78
  74. data/swig-interfaces/macros.i +56 -0
  75. data/test/TC_FXApp.rb +60 -10
  76. data/test/TC_FXJPGImage.rb +47 -0
  77. metadata +24 -103
  78. checksums.yaml.gz.sig +0 -0
  79. data.tar.gz.sig +0 -0
  80. metadata.gz.sig +0 -0
@@ -74,73 +74,73 @@ inline void klass ## _setStyledText(klass* self,const FXString& text,FXint style
74
74
 
75
75
  #define IMPLEMENT_FXTEXT_STUBS(cls) \
76
76
  void cls::setCursorPos(FXint pos,FXbool notify){ \
77
- FXRbCallVoidMethod(this,rb_intern("setCursorPos"),pos,notify); \
77
+ FXRbCallVoidMethod(this,"setCursorPos",pos,notify); \
78
78
  } \
79
79
  FXbool cls::extendSelection(FXint pos,FXTextSelectionMode mode,FXbool notify){ \
80
- return FXRbCallBoolMethod(this,rb_intern("extendSelection"),pos,mode,notify); \
80
+ return FXRbCallBoolMethod(this,"extendSelection",pos,mode,notify); \
81
81
  } \
82
82
  FXbool cls::killSelection(FXbool notify){ \
83
- return FXRbCallBoolMethod(this,rb_intern("killSelection"),notify); \
83
+ return FXRbCallBoolMethod(this,"killSelection",notify); \
84
84
  } \
85
85
  void cls::replaceText(FXint pos,FXint m,const FXchar *text,FXint n,FXbool notify){ \
86
- FXRbCallVoidMethod(this,rb_intern("replaceText"),pos,m,FXString(text,n),notify); \
86
+ FXRbCallVoidMethod(this,"replaceText",pos,m,FXString(text,n),notify); \
87
87
  } \
88
88
  void cls::replaceText(FXint pos,FXint m,const FXString& text,FXbool notify){ \
89
- FXRbCallVoidMethod(this,rb_intern("replaceText"),pos,m,text,notify); \
89
+ FXRbCallVoidMethod(this,"replaceText",pos,m,text,notify); \
90
90
  } \
91
91
  void cls::replaceStyledText(FXint pos,FXint m,const FXchar *text,FXint n,FXint style,FXbool notify){ \
92
- FXRbCallVoidMethod(this,rb_intern("replaceStyledText"),pos,m,FXString(text,n),style,notify); \
92
+ FXRbCallVoidMethod(this,"replaceStyledText",pos,m,FXString(text,n),style,notify); \
93
93
  } \
94
94
  void cls::replaceStyledText(FXint pos,FXint m,const FXString& text,FXint style,FXbool notify){ \
95
- FXRbCallVoidMethod(this,rb_intern("replaceStyledText"),pos,m,text,style,notify); \
95
+ FXRbCallVoidMethod(this,"replaceStyledText",pos,m,text,style,notify); \
96
96
  } \
97
97
  void cls::appendText(const FXchar *text,FXint n,FXbool notify){ \
98
- FXRbCallVoidMethod(this,rb_intern("appendText"),FXString(text,n),notify); \
98
+ FXRbCallVoidMethod(this,"appendText",FXString(text,n),notify); \
99
99
  } \
100
100
  void cls::appendText(const FXString& text,FXbool notify){ \
101
- FXRbCallVoidMethod(this,rb_intern("appendText"),text,notify); \
101
+ FXRbCallVoidMethod(this,"appendText",text,notify); \
102
102
  } \
103
103
  void cls::appendStyledText(const FXchar *text,FXint n,FXint style,FXbool notify){ \
104
- FXRbCallVoidMethod(this,rb_intern("appendStyledText"),FXString(text,n),style,notify); \
104
+ FXRbCallVoidMethod(this,"appendStyledText",FXString(text,n),style,notify); \
105
105
  } \
106
106
  void cls::appendStyledText(const FXString& text,FXint style,FXbool notify){ \
107
- FXRbCallVoidMethod(this,rb_intern("appendStyledText"),text,style,notify); \
107
+ FXRbCallVoidMethod(this,"appendStyledText",text,style,notify); \
108
108
  } \
109
109
  void cls::insertText(FXint pos,const FXchar *text,FXint n,FXbool notify){ \
110
- FXRbCallVoidMethod(this,rb_intern("insertText"),pos,FXString(text,n),notify); \
110
+ FXRbCallVoidMethod(this,"insertText",pos,FXString(text,n),notify); \
111
111
  } \
112
112
  void cls::insertText(FXint pos,const FXString& text,FXbool notify){ \
113
- FXRbCallVoidMethod(this,rb_intern("insertText"),pos,text,notify); \
113
+ FXRbCallVoidMethod(this,"insertText",pos,text,notify); \
114
114
  } \
115
115
  void cls::insertStyledText(FXint pos,const FXchar *text,FXint n,FXint style,FXbool notify){ \
116
- FXRbCallVoidMethod(this,rb_intern("insertStyledText"),pos,FXString(text,n),style,notify); \
116
+ FXRbCallVoidMethod(this,"insertStyledText",pos,FXString(text,n),style,notify); \
117
117
  } \
118
118
  void cls::insertStyledText(FXint pos,const FXString& text,FXint style,FXbool notify){ \
119
- FXRbCallVoidMethod(this,rb_intern("insertStyledText"),pos,text,style,notify); \
119
+ FXRbCallVoidMethod(this,"insertStyledText",pos,text,style,notify); \
120
120
  } \
121
121
  void cls::removeText(FXint pos,FXint n,FXbool notify){ \
122
- FXRbCallVoidMethod(this,rb_intern("removeText"),pos,n,notify); \
122
+ FXRbCallVoidMethod(this,"removeText",pos,n,notify); \
123
123
  } \
124
124
  void cls::changeStyle(FXint pos,FXint n,FXint style){ \
125
- FXRbCallVoidMethod(this,rb_intern("changeStyle"),pos,n,style); \
125
+ FXRbCallVoidMethod(this,"changeStyle",pos,n,style); \
126
126
  } \
127
127
  void cls::changeStyle(FXint pos,const FXchar* style,FXint n){ \
128
- FXRbCallVoidMethod(this,rb_intern("changeStyle"),pos,FXString(style,n)); \
128
+ FXRbCallVoidMethod(this,"changeStyle",pos,FXString(style,n)); \
129
129
  } \
130
130
  void cls::changeStyle(FXint pos,const FXString& style){ \
131
- FXRbCallVoidMethod(this,rb_intern("changeStyle"),pos,style); \
131
+ FXRbCallVoidMethod(this,"changeStyle",pos,style); \
132
132
  } \
133
133
  void cls::setText(const FXchar* text,FXint n,FXbool notify){ \
134
- FXRbCallVoidMethod(this,rb_intern("setText"),FXString(text,n),notify); \
134
+ FXRbCallVoidMethod(this,"setText",FXString(text,n),notify); \
135
135
  } \
136
136
  void cls::setText(const FXString& text,FXbool notify){ \
137
- FXRbCallVoidMethod(this,rb_intern("setText"),text,notify); \
137
+ FXRbCallVoidMethod(this,"setText",text,notify); \
138
138
  } \
139
139
  void cls::setStyledText(const FXchar* text,FXint n,FXint style,FXbool notify){ \
140
- FXRbCallVoidMethod(this,rb_intern("setStyledText"),FXString(text,n),style,notify); \
140
+ FXRbCallVoidMethod(this,"setStyledText",FXString(text,n),style,notify); \
141
141
  } \
142
142
  void cls::setStyledText(const FXString& text,FXint style,FXbool notify){ \
143
- FXRbCallVoidMethod(this,rb_intern("setStyledText"),text,style,notify); \
143
+ FXRbCallVoidMethod(this,"setStyledText",text,style,notify); \
144
144
  }
145
145
 
146
146
 
@@ -47,19 +47,19 @@ inline FXbool klass ## _close(klass* self,FXbool notify){ \
47
47
 
48
48
  #define IMPLEMENT_FXTOPWINDOW_STUBS(cls) \
49
49
  void cls::show(FXuint placement){ \
50
- FXRbCallVoidMethod(this,rb_intern("show"),placement); \
50
+ FXRbCallVoidMethod(this,"show",placement); \
51
51
  } \
52
52
  FXbool cls::maximize(FXbool notify){ \
53
- return FXRbCallBoolMethod(this,rb_intern("maximize"),notify); \
53
+ return FXRbCallBoolMethod(this,"maximize",notify); \
54
54
  } \
55
55
  FXbool cls::minimize(FXbool notify){ \
56
- return FXRbCallBoolMethod(this,rb_intern("minimize"),notify); \
56
+ return FXRbCallBoolMethod(this,"minimize",notify); \
57
57
  } \
58
58
  FXbool cls::restore(FXbool notify){ \
59
- return FXRbCallBoolMethod(this,rb_intern("restore"),notify); \
59
+ return FXRbCallBoolMethod(this,"restore",notify); \
60
60
  } \
61
61
  FXbool cls::close(FXbool notify){ \
62
- return FXRbCallBoolMethod(this,rb_intern("close"),notify); \
62
+ return FXRbCallBoolMethod(this,"close",notify); \
63
63
  }
64
64
 
65
65
 
@@ -35,7 +35,7 @@ inline const FXchar* klass ## _tr(const klass* self,const FXchar* context,const
35
35
 
36
36
  #define IMPLEMENT_FXTRANSLATOR_STUBS(cls) \
37
37
  const FXchar* cls::tr(const FXchar* context,const FXchar* message,const FXchar* hint) const { \
38
- return FXRbCallCStringMethod(this,rb_intern("tr"),context,message,hint); \
38
+ return FXRbCallCStringMethod(this,"tr",context,message,hint); \
39
39
  }
40
40
 
41
41
  class FXRbTranslator : public FXTranslator {
@@ -74,51 +74,51 @@ inline void klass ## _destroy(klass* self){ \
74
74
 
75
75
  #define IMPLEMENT_FXTREEITEM_STUBS(klass,superklass) \
76
76
  void klass::setText(const FXString& txt){ \
77
- FXRbCallVoidMethod(this,rb_intern("setText"),txt); \
77
+ FXRbCallVoidMethod(this,"setText",txt); \
78
78
  } \
79
79
  void klass::setOpenIcon(FXIcon* icn,FXbool owned){ \
80
- FXRbCallVoidMethod(this,rb_intern("setOpenIcon"),icn,owned); \
80
+ FXRbCallVoidMethod(this,"setOpenIcon",icn,owned); \
81
81
  } \
82
82
  void klass::setClosedIcon(FXIcon* icn,FXbool owned){ \
83
- FXRbCallVoidMethod(this,rb_intern("setClosedIcon"),icn,owned); \
83
+ FXRbCallVoidMethod(this,"setClosedIcon",icn,owned); \
84
84
  } \
85
85
  void klass::setFocus(FXbool focus){ \
86
86
  if(NIL_P(FXRbGetRubyObj(this,false))){ \
87
87
  superklass::setFocus(focus); \
88
88
  } \
89
89
  else{ \
90
- FXRbCallVoidMethod(this,rb_intern("setFocus"),focus); \
90
+ FXRbCallVoidMethod(this,"setFocus",focus); \
91
91
  } \
92
92
  } \
93
93
  void klass::setSelected(FXbool selected){ \
94
- FXRbCallVoidMethod(this,rb_intern("setSelected"),selected); \
94
+ FXRbCallVoidMethod(this,"setSelected",selected); \
95
95
  } \
96
96
  void klass::setOpened(FXbool opened){ \
97
- FXRbCallVoidMethod(this,rb_intern("setOpened"),opened); \
97
+ FXRbCallVoidMethod(this,"setOpened",opened); \
98
98
  } \
99
99
  void klass::setExpanded(FXbool expanded){ \
100
- FXRbCallVoidMethod(this,rb_intern("setExpanded"),expanded); \
100
+ FXRbCallVoidMethod(this,"setExpanded",expanded); \
101
101
  } \
102
102
  void klass::setEnabled(FXbool enabled){ \
103
- FXRbCallVoidMethod(this,rb_intern("setEnabled"),enabled); \
103
+ FXRbCallVoidMethod(this,"setEnabled",enabled); \
104
104
  } \
105
105
  void klass::setDraggable(FXbool draggable){ \
106
- FXRbCallVoidMethod(this,rb_intern("setDraggable"),draggable); \
106
+ FXRbCallVoidMethod(this,"setDraggable",draggable); \
107
107
  } \
108
108
  FXint klass::getWidth(const FXTreeList* list) const { \
109
- return FXRbCallIntMethod(this,rb_intern("getWidth"),list); \
109
+ return FXRbCallIntMethod(this,"getWidth",list); \
110
110
  } \
111
111
  FXint klass::getHeight(const FXTreeList* list) const { \
112
- return FXRbCallIntMethod(this,rb_intern("getHeight"),list); \
112
+ return FXRbCallIntMethod(this,"getHeight",list); \
113
113
  } \
114
114
  void klass::create(){ \
115
- FXRbCallVoidMethod(this,rb_intern("create")); \
115
+ FXRbCallVoidMethod(this,"create"); \
116
116
  } \
117
117
  void klass::detach(){ \
118
- FXRbCallVoidMethod(this,rb_intern("detach")); \
118
+ FXRbCallVoidMethod(this,"detach"); \
119
119
  } \
120
120
  void klass::destroy(){ \
121
- FXRbCallVoidMethod(this,rb_intern("destroy")); \
121
+ FXRbCallVoidMethod(this,"destroy"); \
122
122
  }
123
123
 
124
124
 
@@ -195,46 +195,46 @@ inline FXbool klass ## _disableItem(klass* self,FXTreeItem* item){ \
195
195
 
196
196
  #define IMPLEMENT_FXTREELIST_STUBS(cls) \
197
197
  FXbool cls::selectItem(FXTreeItem* item,FXbool notify){ \
198
- return FXRbCallBoolMethod(this,rb_intern("selectItem"),item,notify); \
198
+ return FXRbCallBoolMethod(this,"selectItem",item,notify); \
199
199
  } \
200
200
  FXbool cls::deselectItem(FXTreeItem* item,FXbool notify){ \
201
- return FXRbCallBoolMethod(this,rb_intern("deselectItem"),item,notify); \
201
+ return FXRbCallBoolMethod(this,"deselectItem",item,notify); \
202
202
  } \
203
203
  FXbool cls::toggleItem(FXTreeItem* item,FXbool notify){ \
204
- return FXRbCallBoolMethod(this,rb_intern("toggleItem"),item,notify); \
204
+ return FXRbCallBoolMethod(this,"toggleItem",item,notify); \
205
205
  } \
206
206
  FXbool cls::extendSelection(FXTreeItem* item,FXbool notify){ \
207
- return FXRbCallBoolMethod(this,rb_intern("extendSelection"),item,notify); \
207
+ return FXRbCallBoolMethod(this,"extendSelection",item,notify); \
208
208
  } \
209
209
  FXbool cls::killSelection(FXbool notify){ \
210
- return FXRbCallBoolMethod(this,rb_intern("killSelection"),notify); \
210
+ return FXRbCallBoolMethod(this,"killSelection",notify); \
211
211
  } \
212
212
  FXbool cls::openItem(FXTreeItem* item,FXbool notify){ \
213
- return FXRbCallBoolMethod(this,rb_intern("openItem"),item,notify); \
213
+ return FXRbCallBoolMethod(this,"openItem",item,notify); \
214
214
  } \
215
215
  FXbool cls::closeItem(FXTreeItem* item,FXbool notify){ \
216
- return FXRbCallBoolMethod(this,rb_intern("closeItem"),item,notify); \
216
+ return FXRbCallBoolMethod(this,"closeItem",item,notify); \
217
217
  } \
218
218
  FXbool cls::collapseTree(FXTreeItem* tree,FXbool notify){ \
219
- return FXRbCallBoolMethod(this,rb_intern("collapseTree"),tree,notify); \
219
+ return FXRbCallBoolMethod(this,"collapseTree",tree,notify); \
220
220
  } \
221
221
  FXbool cls::expandTree(FXTreeItem* tree,FXbool notify){ \
222
- return FXRbCallBoolMethod(this,rb_intern("expandTree"),tree,notify); \
222
+ return FXRbCallBoolMethod(this,"expandTree",tree,notify); \
223
223
  } \
224
224
  void cls::setCurrentItem(FXTreeItem* item,FXbool notify){ \
225
- FXRbCallVoidMethod(this,rb_intern("setCurrentItem"),item,notify); \
225
+ FXRbCallVoidMethod(this,"setCurrentItem",item,notify); \
226
226
  } \
227
227
  FXTreeItem* cls::getItemAt(FXint x,FXint y) const { \
228
- return FXRbCallTreeItemMethod(this,rb_intern("getItemAt"),x,y); \
228
+ return FXRbCallTreeItemMethod(this,"getItemAt",x,y); \
229
229
  } \
230
230
  void cls::makeItemVisible(FXTreeItem* item) { \
231
- FXRbCallVoidMethod(this,rb_intern("makeItemVisible"),item); \
231
+ FXRbCallVoidMethod(this,"makeItemVisible",item); \
232
232
  } \
233
233
  FXbool cls::enableItem(FXTreeItem* item){ \
234
- return FXRbCallBoolMethod(this,rb_intern("enableItem"),item); \
234
+ return FXRbCallBoolMethod(this,"enableItem",item); \
235
235
  } \
236
236
  FXbool cls::disableItem(FXTreeItem* item){ \
237
- return FXRbCallBoolMethod(this,rb_intern("disableItem"),item); \
237
+ return FXRbCallBoolMethod(this,"disableItem",item); \
238
238
  }
239
239
 
240
240
 
@@ -34,7 +34,7 @@ inline void klass ## _setCurrentItem(klass* self,FXTreeItem* item,FXbool notify)
34
34
 
35
35
  #define IMPLEMENT_FXTREELISTBOX_STUBS(cls) \
36
36
  void cls::setCurrentItem(FXTreeItem* item,FXbool notify){ \
37
- FXRbCallVoidMethod(this,rb_intern("setCurrentItem"),item,notify); \
37
+ FXRbCallVoidMethod(this,"setCurrentItem",item,notify); \
38
38
  }
39
39
 
40
40
  class FXRbTreeListBox : public FXTreeListBox {
@@ -125,97 +125,97 @@ inline void klass ## _dropDisable(klass* self){ \
125
125
 
126
126
  #define IMPLEMENT_FXWINDOW_STUBS(cls) \
127
127
  void cls::layout(){ \
128
- FXRbCallVoidMethod(this,rb_intern("layout")); \
128
+ FXRbCallVoidMethod(this,"layout"); \
129
129
  } \
130
130
  FXint cls::getDefaultWidth(){ \
131
- return FXRbCallIntMethod(this,rb_intern("getDefaultWidth")); \
131
+ return FXRbCallIntMethod(this,"getDefaultWidth"); \
132
132
  } \
133
133
  FXint cls::getDefaultHeight(){ \
134
- return FXRbCallIntMethod(this,rb_intern("getDefaultHeight")); \
134
+ return FXRbCallIntMethod(this,"getDefaultHeight"); \
135
135
  } \
136
136
  FXint cls::getWidthForHeight(FXint givenheight){ \
137
- return FXRbCallIntMethod(this,rb_intern("getWidthForHeight"),givenheight); \
137
+ return FXRbCallIntMethod(this,"getWidthForHeight",givenheight); \
138
138
  } \
139
139
  FXint cls::getHeightForWidth(FXint givenwidth){ \
140
- return FXRbCallIntMethod(this,rb_intern("getHeightForWidth"),givenwidth); \
140
+ return FXRbCallIntMethod(this,"getHeightForWidth",givenwidth); \
141
141
  } \
142
142
  bool cls::canFocus() const { \
143
- return FXRbCallBoolMethod(this,rb_intern("canFocus")); \
143
+ return FXRbCallBoolMethod(this,"canFocus"); \
144
144
  } \
145
145
  void cls::setFocus(){ \
146
- FXRbCallVoidMethod(this,rb_intern("setFocus")); \
146
+ FXRbCallVoidMethod(this,"setFocus"); \
147
147
  } \
148
148
  void cls::killFocus(){ \
149
- FXRbCallVoidMethod(this,rb_intern("killFocus")); \
149
+ FXRbCallVoidMethod(this,"killFocus"); \
150
150
  } \
151
151
  void cls::changeFocus(FXWindow* child){ \
152
- if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,rb_intern("changeFocus"),child); \
152
+ if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,"changeFocus",child); \
153
153
  } \
154
154
  void cls::setDefault(FXbool enable){ \
155
- FXRbCallVoidMethod(this,rb_intern("setDefault"),enable); \
155
+ FXRbCallVoidMethod(this,"setDefault",enable); \
156
156
  } \
157
157
  void cls::enable(){ \
158
- FXRbCallVoidMethod(this,rb_intern("enable")); \
158
+ FXRbCallVoidMethod(this,"enable"); \
159
159
  } \
160
160
  void cls::disable(){ \
161
- FXRbCallVoidMethod(this,rb_intern("disable")); \
161
+ FXRbCallVoidMethod(this,"disable"); \
162
162
  } \
163
163
  void cls::raise(){ \
164
- FXRbCallVoidMethod(this,rb_intern("raiseWindow")); \
164
+ FXRbCallVoidMethod(this,"raiseWindow"); \
165
165
  } \
166
166
  void cls::lower(){ \
167
- FXRbCallVoidMethod(this,rb_intern("lower")); \
167
+ FXRbCallVoidMethod(this,"lower"); \
168
168
  } \
169
169
  void cls::move(FXint x,FXint y){ \
170
- FXRbCallVoidMethod(this,rb_intern("move"),x,y); \
170
+ FXRbCallVoidMethod(this,"move",x,y); \
171
171
  } \
172
172
  void cls::position(FXint x,FXint y,FXint w,FXint h){ \
173
- FXRbCallVoidMethod(this,rb_intern("position"),x,y,w,h); \
173
+ FXRbCallVoidMethod(this,"position",x,y,w,h); \
174
174
  } \
175
175
  void cls::recalc(){ \
176
- if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,rb_intern("recalc")); \
176
+ if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,"recalc"); \
177
177
  } \
178
178
  void cls::reparent(FXWindow* father,FXWindow* other){ \
179
- FXRbCallVoidMethod(this,rb_intern("reparent"),father,other); \
179
+ FXRbCallVoidMethod(this,"reparent",father,other); \
180
180
  } \
181
181
  void cls::show(){ \
182
- FXRbCallVoidMethod(this,rb_intern("show")); \
182
+ FXRbCallVoidMethod(this,"show"); \
183
183
  } \
184
184
  void cls::hide(){ \
185
- FXRbCallVoidMethod(this,rb_intern("hide")); \
185
+ FXRbCallVoidMethod(this,"hide"); \
186
186
  } \
187
187
  bool cls::isComposite() const { \
188
- return FXRbCallBoolMethod(this,rb_intern("isComposite")); \
188
+ return FXRbCallBoolMethod(this,"isComposite"); \
189
189
  } \
190
190
  bool cls::contains(FXint parentx,FXint parenty) const{ \
191
- return FXRbCallBoolMethod(this,rb_intern("contains"),parentx,parenty); \
191
+ return FXRbCallBoolMethod(this,"contains",parentx,parenty); \
192
192
  } \
193
193
  bool cls::doesSaveUnder() const { \
194
- return FXRbCallBoolMethod(this,rb_intern("doesSaveUnder")); \
194
+ return FXRbCallBoolMethod(this,"doesSaveUnder"); \
195
195
  } \
196
196
  void cls::setBackColor(FXColor clr) { \
197
- FXRbCallVoidMethod(this,rb_intern("setBackColor"),clr); \
197
+ FXRbCallVoidMethod(this,"setBackColor",clr); \
198
198
  } \
199
199
  const FXchar* cls::tr(const FXchar* message,const FXchar* hint) const { \
200
- return FXRbCallCStringMethod(this,rb_intern("tr"),message,hint); \
200
+ return FXRbCallCStringMethod(this,"tr",message,hint); \
201
201
  } \
202
202
  void cls::setShape(const FXRegion& region) { \
203
- FXRbCallVoidMethod(this,rb_intern("setShape"),region); \
203
+ FXRbCallVoidMethod(this,"setShape",region); \
204
204
  } \
205
205
  void cls::setShape(FXBitmap* bitmap) { \
206
- FXRbCallVoidMethod(this,rb_intern("setShape"),bitmap); \
206
+ FXRbCallVoidMethod(this,"setShape",bitmap); \
207
207
  } \
208
208
  void cls::setShape(FXIcon* icon) { \
209
- FXRbCallVoidMethod(this,rb_intern("setShape"),icon); \
209
+ FXRbCallVoidMethod(this,"setShape",icon); \
210
210
  } \
211
211
  void cls::clearShape() { \
212
- FXRbCallVoidMethod(this,rb_intern("clearShape")); \
212
+ FXRbCallVoidMethod(this,"clearShape"); \
213
213
  } \
214
214
  void cls::dropEnable() { \
215
- FXRbCallVoidMethod(this,rb_intern("dropEnable")); \
215
+ FXRbCallVoidMethod(this,"dropEnable"); \
216
216
  } \
217
217
  void cls::dropDisable() { \
218
- FXRbCallVoidMethod(this,rb_intern("dropDisable")); \
218
+ FXRbCallVoidMethod(this,"dropDisable"); \
219
219
  }
220
220
 
221
221
  class FXRbWindow : public FXWindow {
@@ -91,8 +91,10 @@ swig_type_info *FXRbTypeQuery(const char *name);
91
91
  void* FXRbConvertPtr(VALUE obj,swig_type_info* typeinfo);
92
92
 
93
93
  // Returns an FXInputHandle for this Ruby file object
94
- FXInputHandle FXRbGetReadFileHandle(VALUE obj);
95
- FXInputHandle FXRbGetWriteFileHandle(VALUE obj);
94
+ FXInputHandle FXRbGetReadFileHandle(VALUE obj,FXuint mode);
95
+ FXInputHandle FXRbGetWriteFileHandle(VALUE obj,FXuint mode);
96
+ void FXRbRemoveReadFileHandle(VALUE obj,FXuint mode);
97
+ void FXRbRemoveWriteFileHandle(VALUE obj,FXuint mode);
96
98
 
97
99
  // Register mapping from Ruby objects to FOX objects
98
100
  void FXRbRegisterRubyObj(VALUE rubyObj, const void* foxObj);
@@ -100,6 +102,13 @@ void FXRbRegisterRubyObj(VALUE rubyObj, const void* foxObj);
100
102
  // Remove mapping for this FOX object and zero out any pointers
101
103
  // to this (now dead) C++ object held by any Ruby object
102
104
  void FXRbUnregisterRubyObj(const void* foxObj);
105
+ void FXRbUnregisterRubyObj2(const void* foxObj, bool alsoOwned=true);
106
+ void FXRbUnregisterBorrowedRubyObj(const void* foxObj);
107
+ void FXRbUnregisterBorrowedRubyObj(FXlong foxObj);
108
+ void FXRbUnregisterBorrowedRubyObj(FXString& foxObj);
109
+ void FXRbUnregisterBorrowedRubyObj(FXRegion& foxObj);
110
+ void FXRbUnregisterBorrowedRubyObj(FXRectangle& foxObj);
111
+ void FXRbUnregisterBorrowedRubyObj(FXDC& foxObj);
103
112
 
104
113
  // Register an object that must be destroyed before FXApp is destroyed
105
114
  void FXRbRegisterAppSensitiveObject(FXObject* obj);
@@ -168,10 +177,10 @@ extern FXColor *FXRbConvertToFXColors(VALUE string_or_ary, FXuint *opts);
168
177
  extern void* FXRbGetExpectedData(VALUE recv,FXSelector key,VALUE data);
169
178
 
170
179
  // Returns the name of the message handler function (or NULL)
171
- ID FXRbLookupHandler(FXObject* recv,FXSelector key);
180
+ ID FXRbLookupHandler_gvlcb(FXObject* recv,FXSelector key);
172
181
 
173
182
  // Handle this message
174
- long FXRbHandleMessage(FXObject* recv,ID func,FXObject* sender,FXSelector key,void* data);
183
+ long FXRbHandleMessage_gvlcb(FXObject* recv,ID func,FXObject* sender,FXSelector key,void* data);
175
184
 
176
185
  // Convert a signal name string to its corresponding signal number
177
186
  FXint FXRbSignalNameToNumber(const char* name);
@@ -351,324 +360,409 @@ void FXRbRange2LoHi(VALUE range,FXint& lo,FXint& hi);
351
360
  void FXRbRange2LoHi(VALUE range,FXdouble& lo,FXdouble& hi);
352
361
 
353
362
  // Call function with "void" return value
354
- void FXRbCallVoidMethod(FXObject* recv,ID func);
363
+ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func);
355
364
 
356
- void FXRbCallVoidMethod(FXDC* recv,ID func);
365
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func);
357
366
 
358
367
  /* One argument */
359
368
  template<class TYPE>
360
- void FXRbCallVoidMethod(FXObject* recv,ID func, TYPE& arg){
369
+ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func, TYPE& arg){
361
370
  VALUE obj=FXRbGetRubyObj(recv,false);
362
371
  FXASSERT(!NIL_P(obj));
363
372
  FXASSERT(!FXRbIsInGC(recv));
364
- rb_funcall(obj,func,1,to_ruby(arg));
373
+ rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
374
+ FXRbUnregisterBorrowedRubyObj(&arg);
365
375
  }
366
376
 
367
377
  template<class TYPE>
368
- void FXRbCallVoidMethod(FXDC* recv,ID func,TYPE arg){
378
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE arg){
369
379
  VALUE obj=FXRbGetRubyObj(recv,false);
370
380
  FXASSERT(!NIL_P(obj));
371
- rb_funcall(obj,func,1,to_ruby(arg));
381
+ rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
382
+ FXRbUnregisterBorrowedRubyObj(arg);
372
383
  }
373
384
 
374
385
  template<class TYPE>
375
- void FXRbCallVoidMethod(const FXObject* recv, ID func, TYPE& arg){
386
+ void FXRbCallVoidMethod_gvlcb(const FXObject* recv, const char *func, TYPE& arg){
376
387
  VALUE obj=FXRbGetRubyObj(recv,false);
377
388
  FXASSERT(!NIL_P(obj));
378
389
  FXASSERT(!FXRbIsInGC(recv));
379
- rb_funcall(obj,func,1,to_ruby(arg));
390
+ rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
391
+ FXRbUnregisterBorrowedRubyObj(&arg);
380
392
  }
381
393
 
382
394
  /* Two arguments */
383
395
  template<class TYPE1, class TYPE2>
384
- void FXRbCallVoidMethod(FXObject* recv,ID func,TYPE1 arg1,TYPE2 arg2){
396
+ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func,TYPE1 arg1,TYPE2 arg2){
385
397
  VALUE obj=FXRbGetRubyObj(recv,false);
386
398
  FXASSERT(!NIL_P(obj));
387
- rb_funcall(obj,func,2,to_ruby(arg1),to_ruby(arg2));
399
+ rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
400
+ FXRbUnregisterBorrowedRubyObj(arg1);
401
+ FXRbUnregisterBorrowedRubyObj(arg2);
388
402
  }
389
403
 
390
404
  template<class TYPE1, class TYPE2>
391
- void FXRbCallVoidMethod(FXDC* recv,ID func,TYPE1 arg1,TYPE2 arg2){
405
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE1 arg1,TYPE2 arg2){
392
406
  VALUE obj=FXRbGetRubyObj(recv,false);
393
407
  FXASSERT(!NIL_P(obj));
394
- rb_funcall(obj,func,2,to_ruby(arg1),to_ruby(arg2));
408
+ rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
409
+ FXRbUnregisterBorrowedRubyObj(arg1);
410
+ FXRbUnregisterBorrowedRubyObj(arg2);
395
411
  }
396
412
 
397
- FXTreeItem* FXRbCallTreeItemMethod(const FXTreeList* recv,ID func,FXint x,FXint y);
398
- FXFoldingItem* FXRbCallFoldingItemMethod(const FXFoldingList* recv,ID func,FXint x,FXint y);
413
+ template<class TYPE>
414
+ void FXRbCallVoidArrayMethod(FXDC* recv,const char *func,TYPE objs,FXuint num){
415
+ VALUE obj=FXRbGetRubyObj(recv,false);
416
+ VALUE array=FXRbMakeArray(objs,num);
417
+ FXASSERT(!NIL_P(obj));
418
+ rb_funcall(obj,rb_intern(func),1,array);
419
+ for(FXuint i=0; i<num; i++)
420
+ FXRbUnregisterBorrowedRubyObj(&objs[i]);
421
+ }
422
+
423
+ FXTreeItem* FXRbCallTreeItemMethod_gvlcb(const FXTreeList* recv,const char *func,FXint x,FXint y);
424
+ FXFoldingItem* FXRbCallFoldingItemMethod_gvlcb(const FXFoldingList* recv,const char *func,FXint x,FXint y);
399
425
 
400
426
  /* Three arguments */
401
427
  template<class TYPE1, class TYPE2, class TYPE3>
402
- void FXRbCallVoidMethod(FXObject* recv,ID func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3){
428
+ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3){
403
429
  VALUE obj=FXRbGetRubyObj(recv,false);
404
430
  FXASSERT(!NIL_P(obj));
405
- rb_funcall(obj,func,3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
431
+ rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
432
+ FXRbUnregisterBorrowedRubyObj(arg1);
433
+ FXRbUnregisterBorrowedRubyObj(arg2);
434
+ FXRbUnregisterBorrowedRubyObj(arg3);
406
435
  }
407
436
 
408
437
  template<class TYPE1, class TYPE2, class TYPE3>
409
- void FXRbCallVoidMethod(FXDC* recv,ID func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3){
438
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3){
410
439
  VALUE obj=FXRbGetRubyObj(recv,false);
411
440
  FXASSERT(!NIL_P(obj));
412
- rb_funcall(obj,func,3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
441
+ rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
442
+ FXRbUnregisterBorrowedRubyObj(arg1);
443
+ FXRbUnregisterBorrowedRubyObj(arg2);
444
+ FXRbUnregisterBorrowedRubyObj(arg3);
413
445
  }
414
446
 
415
447
  /* Four arguments */
416
448
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4>
417
- void FXRbCallVoidMethod(FXObject* recv,ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4){
449
+ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4){
418
450
  VALUE obj=FXRbGetRubyObj(recv,false);
419
451
  FXASSERT(!NIL_P(obj));
420
- rb_funcall(obj,func,4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
452
+ rb_funcall(obj,rb_intern(func),4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
453
+ FXRbUnregisterBorrowedRubyObj(arg1);
454
+ FXRbUnregisterBorrowedRubyObj(arg2);
455
+ FXRbUnregisterBorrowedRubyObj(arg3);
456
+ FXRbUnregisterBorrowedRubyObj(arg4);
421
457
  }
422
458
 
423
459
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4>
424
- void FXRbCallVoidMethod(FXDC* recv,ID func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4){
460
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4){
425
461
  VALUE obj=FXRbGetRubyObj(recv,false);
426
462
  FXASSERT(!NIL_P(obj));
427
- rb_funcall(obj,func,4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
463
+ rb_funcall(obj,rb_intern(func),4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
464
+ FXRbUnregisterBorrowedRubyObj(arg1);
465
+ FXRbUnregisterBorrowedRubyObj(arg2);
466
+ FXRbUnregisterBorrowedRubyObj(arg3);
467
+ FXRbUnregisterBorrowedRubyObj(arg4);
428
468
  }
429
469
 
430
470
  /* Five arguments */
431
471
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
432
- void FXRbCallVoidMethod(FXObject* recv,ID func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4,TYPE5 arg5){
472
+ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4,TYPE5 arg5){
433
473
  VALUE obj=FXRbGetRubyObj(recv,false);
434
474
  FXASSERT(!NIL_P(obj));
435
- rb_funcall(obj,func,5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
475
+ rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
476
+ FXRbUnregisterBorrowedRubyObj(arg1);
477
+ FXRbUnregisterBorrowedRubyObj(arg2);
478
+ FXRbUnregisterBorrowedRubyObj(arg3);
479
+ FXRbUnregisterBorrowedRubyObj(arg4);
480
+ FXRbUnregisterBorrowedRubyObj(arg5);
436
481
  }
437
482
 
438
483
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
439
- void FXRbCallVoidMethod(FXDC* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
484
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
440
485
  VALUE obj=FXRbGetRubyObj(recv,false);
441
486
  FXASSERT(!NIL_P(obj));
442
- rb_funcall(obj,func,5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
487
+ rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
488
+ FXRbUnregisterBorrowedRubyObj(arg1);
489
+ FXRbUnregisterBorrowedRubyObj(arg2);
490
+ FXRbUnregisterBorrowedRubyObj(arg3);
491
+ FXRbUnregisterBorrowedRubyObj(arg4);
492
+ FXRbUnregisterBorrowedRubyObj(arg5);
443
493
  }
444
494
 
445
495
  /* Six arguments */
446
496
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class TYPE6>
447
- void FXRbCallVoidMethod(const FXObject* recv, ID func, TYPE1 arg1, TYPE2& arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6){
497
+ void FXRbCallVoidMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2& arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6){
448
498
  VALUE obj=FXRbGetRubyObj(recv,false);
449
499
  FXASSERT(!NIL_P(obj));
450
- rb_funcall(obj,func,6,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6));
500
+ rb_funcall(obj,rb_intern(func),6,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6));
501
+ FXRbUnregisterBorrowedRubyObj(arg1);
502
+ FXRbUnregisterBorrowedRubyObj(arg2);
503
+ FXRbUnregisterBorrowedRubyObj(arg3);
504
+ FXRbUnregisterBorrowedRubyObj(arg4);
505
+ FXRbUnregisterBorrowedRubyObj(arg5);
506
+ FXRbUnregisterBorrowedRubyObj(arg6);
451
507
  }
452
508
 
453
509
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class TYPE6>
454
- void FXRbCallVoidMethod(FXDC* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6){
510
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6){
455
511
  VALUE obj=FXRbGetRubyObj(recv,false);
456
512
  FXASSERT(!NIL_P(obj));
457
- rb_funcall(obj,func,6,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6));
513
+ rb_funcall(obj,rb_intern(func),6,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6));
514
+ FXRbUnregisterBorrowedRubyObj(arg1);
515
+ FXRbUnregisterBorrowedRubyObj(arg2);
516
+ FXRbUnregisterBorrowedRubyObj(arg3);
517
+ FXRbUnregisterBorrowedRubyObj(arg4);
518
+ FXRbUnregisterBorrowedRubyObj(arg5);
519
+ FXRbUnregisterBorrowedRubyObj(arg6);
458
520
  }
459
521
 
460
522
  /* Seven arguments */
461
523
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class TYPE6, class TYPE7>
462
- void FXRbCallVoidMethod(FXDC* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6, TYPE7 arg7){
524
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6, TYPE7 arg7){
463
525
  VALUE obj=FXRbGetRubyObj(recv,false);
464
526
  FXASSERT(!NIL_P(obj));
465
- rb_funcall(obj,func,7,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6),to_ruby(arg7));
527
+ rb_funcall(obj,rb_intern(func),7,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6),to_ruby(arg7));
528
+ FXRbUnregisterBorrowedRubyObj(arg1);
529
+ FXRbUnregisterBorrowedRubyObj(arg2);
530
+ FXRbUnregisterBorrowedRubyObj(arg3);
531
+ FXRbUnregisterBorrowedRubyObj(arg4);
532
+ FXRbUnregisterBorrowedRubyObj(arg5);
533
+ FXRbUnregisterBorrowedRubyObj(arg6);
534
+ FXRbUnregisterBorrowedRubyObj(arg7);
466
535
  }
467
536
 
468
537
  /* Nine arguments */
469
538
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class TYPE6, class TYPE7, class TYPE8, class TYPE9>
470
- void FXRbCallVoidMethod(FXDC* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6, TYPE7 arg7, TYPE8 arg8, TYPE9 arg9){
539
+ void FXRbCallVoidMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6, TYPE7 arg7, TYPE8 arg8, TYPE9 arg9){
471
540
  VALUE obj=FXRbGetRubyObj(recv,false);
472
541
  FXASSERT(!NIL_P(obj));
473
- rb_funcall(obj,func,9,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6),to_ruby(arg7), to_ruby(arg8), to_ruby(arg9));
542
+ rb_funcall(obj,rb_intern(func),9,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6),to_ruby(arg7), to_ruby(arg8), to_ruby(arg9));
543
+ FXRbUnregisterBorrowedRubyObj(arg1);
544
+ FXRbUnregisterBorrowedRubyObj(arg2);
545
+ FXRbUnregisterBorrowedRubyObj(arg3);
546
+ FXRbUnregisterBorrowedRubyObj(arg4);
547
+ FXRbUnregisterBorrowedRubyObj(arg5);
548
+ FXRbUnregisterBorrowedRubyObj(arg6);
549
+ FXRbUnregisterBorrowedRubyObj(arg7);
550
+ FXRbUnregisterBorrowedRubyObj(arg8);
551
+ FXRbUnregisterBorrowedRubyObj(arg9);
474
552
  }
475
553
 
476
554
  /* Eleven arguments (!) */
477
555
  template<class TYPE1,class TYPE2,class TYPE3,class TYPE4,class TYPE5,class TYPE6,class TYPE7,class TYPE8,class TYPE9,class TYPE10,class TYPE11>
478
- void FXRbCallVoidMethod(FXObject* recv,ID func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4,TYPE5 arg5,TYPE6 arg6,TYPE7 arg7,TYPE8 arg8,TYPE9 arg9,TYPE10 arg10,TYPE11 arg11){
556
+ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4,TYPE5 arg5,TYPE6 arg6,TYPE7 arg7,TYPE8 arg8,TYPE9 arg9,TYPE10 arg10,TYPE11 arg11){
479
557
  VALUE obj=FXRbGetRubyObj(recv,false);
480
558
  FXASSERT(!NIL_P(obj));
481
- rb_funcall(obj,func,11,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6),to_ruby(arg7),to_ruby(arg8),to_ruby(arg9),to_ruby(arg10),to_ruby(arg11));
559
+ rb_funcall(obj,rb_intern(func),11,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5),to_ruby(arg6),to_ruby(arg7),to_ruby(arg8),to_ruby(arg9),to_ruby(arg10),to_ruby(arg11));
560
+ FXRbUnregisterBorrowedRubyObj(arg1);
561
+ FXRbUnregisterBorrowedRubyObj(arg2);
562
+ FXRbUnregisterBorrowedRubyObj(arg3);
563
+ FXRbUnregisterBorrowedRubyObj(arg4);
564
+ FXRbUnregisterBorrowedRubyObj(arg5);
565
+ FXRbUnregisterBorrowedRubyObj(arg6);
566
+ FXRbUnregisterBorrowedRubyObj(arg7);
567
+ FXRbUnregisterBorrowedRubyObj(arg8);
568
+ FXRbUnregisterBorrowedRubyObj(arg9);
569
+ FXRbUnregisterBorrowedRubyObj(arg10);
570
+ FXRbUnregisterBorrowedRubyObj(arg11);
482
571
  }
483
572
 
484
573
  // Call function with "FXbool" return value
485
- inline bool FXRbCallBoolMethod(FXStream* recv,ID func){
486
- VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),func,0,NULL);
574
+ inline bool FXRbCallBoolMethod_gvlcb(FXStream* recv,const char *func){
575
+ VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),0,NULL);
487
576
  return (v==Qtrue);
488
577
  }
489
578
 
490
579
  template<class TYPE1>
491
- bool FXRbCallBoolMethod(FXStream* recv,ID func,TYPE1 arg){
492
- VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),func,1,to_ruby(arg));
580
+ bool FXRbCallBoolMethod_gvlcb(FXStream* recv,const char *func,TYPE1 arg){
581
+ VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),1,to_ruby(arg));
493
582
  return (v==Qtrue);
494
583
  }
495
584
 
496
585
  template<class TYPE1,class TYPE2>
497
- bool FXRbCallBoolMethod(FXStream* recv,ID func,TYPE1 arg1,TYPE2 arg2){
498
- VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),func,2,to_ruby(arg1),to_ruby(arg2));
586
+ bool FXRbCallBoolMethod_gvlcb(FXStream* recv,const char *func,TYPE1 arg1,TYPE2 arg2){
587
+ VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
499
588
  return (v==Qtrue);
500
589
  }
501
590
 
502
- bool FXRbCallBoolMethod(const FXObject* recv,ID func);
591
+ bool FXRbCallBoolMethod_gvlcb(const FXObject* recv,const char *func);
503
592
 
504
593
  template<class TYPE>
505
- bool FXRbCallBoolMethod(FXObject* recv, ID func, TYPE& arg){
594
+ bool FXRbCallBoolMethod_gvlcb(FXObject* recv, const char *func, TYPE& arg){
506
595
  VALUE obj=FXRbGetRubyObj(recv,false);
507
596
  FXASSERT(!NIL_P(obj));
508
- VALUE v=rb_funcall(obj,func,1,to_ruby(arg));
597
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
509
598
  return (v==Qtrue);
510
599
  }
511
600
 
512
601
  template<class TYPE>
513
- bool FXRbCallBoolMethod(const FXObject* recv,ID func,TYPE& arg){
514
- VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),func,1,to_ruby(arg));
602
+ bool FXRbCallBoolMethod_gvlcb(const FXObject* recv,const char *func,TYPE& arg){
603
+ VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),1,to_ruby(arg));
515
604
  return (v==Qtrue);
516
605
  }
517
606
 
518
607
  template<class TYPE1, class TYPE2>
519
- bool FXRbCallBoolMethod(const FXObject* recv, ID func, TYPE1 arg1, TYPE2 arg2){
608
+ bool FXRbCallBoolMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2){
520
609
  VALUE obj=FXRbGetRubyObj(recv,false);
521
610
  FXASSERT(!NIL_P(obj));
522
- VALUE v=rb_funcall(obj,func,2,to_ruby(arg1),to_ruby(arg2));
611
+ VALUE v=rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
523
612
  return (v==Qtrue);
524
613
  }
525
614
 
526
615
  template<class TYPE1, class TYPE2, class TYPE3>
527
- bool FXRbCallBoolMethod(const FXObject* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3){
616
+ bool FXRbCallBoolMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3){
528
617
  VALUE obj=FXRbGetRubyObj(recv,false);
529
618
  FXASSERT(!NIL_P(obj));
530
- VALUE v=rb_funcall(obj,func,3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
619
+ VALUE v=rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
531
620
  return (v==Qtrue);
532
621
  }
533
622
 
534
623
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
535
- bool FXRbCallBoolMethod(const FXObject* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
624
+ bool FXRbCallBoolMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
536
625
  VALUE obj=FXRbGetRubyObj(recv,false);
537
626
  FXASSERT(!NIL_P(obj));
538
- VALUE v=rb_funcall(obj,func,5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
627
+ VALUE v=rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
539
628
  return (v==Qtrue);
540
629
  }
541
630
 
542
631
  // Call function with "FXint" return value
543
- FXint FXRbCallIntMethod(const FXObject* recv,ID func);
632
+ FXint FXRbCallIntMethod_gvlcb(const FXObject* recv,const char *func);
544
633
 
545
634
  template<class TYPE>
546
- FXint FXRbCallIntMethod(FXObject* recv, ID func, TYPE arg){
635
+ FXint FXRbCallIntMethod_gvlcb(FXObject* recv, const char *func, TYPE arg){
547
636
  VALUE obj=FXRbGetRubyObj(recv,false);
548
637
  FXASSERT(!NIL_P(obj));
549
- VALUE v=rb_funcall(obj,func,1,to_ruby(arg));
638
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
550
639
  return static_cast<FXint>(NUM2INT(v));
551
640
  }
552
641
 
553
642
  template<class TYPE>
554
- FXint FXRbCallIntMethod(const FXObject* recv, ID func, TYPE arg){
643
+ FXint FXRbCallIntMethod_gvlcb(const FXObject* recv, const char *func, TYPE arg){
555
644
  VALUE obj=FXRbGetRubyObj(recv,false);
556
645
  FXASSERT(!NIL_P(obj));
557
- VALUE v=rb_funcall(obj,func,1,to_ruby(arg));
646
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
558
647
  return static_cast<FXint>(NUM2INT(v));
559
648
  }
560
649
 
561
650
  template<class TYPE1, class TYPE2>
562
- FXint FXRbCallIntMethod(const FXObject* recv, ID func, TYPE1 arg1, TYPE2 arg2){
651
+ FXint FXRbCallIntMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2){
563
652
  VALUE obj=FXRbGetRubyObj(recv,false);
564
653
  FXASSERT(!NIL_P(obj));
565
- VALUE result=rb_funcall(obj,func,2,to_ruby(arg1),to_ruby(arg2));
654
+ VALUE result=rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
566
655
  return static_cast<FXint>(NUM2INT(result));
567
656
  }
568
657
 
569
658
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
570
- FXint FXRbCallIntMethod(const FXObject* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
659
+ FXint FXRbCallIntMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
571
660
  VALUE obj=FXRbGetRubyObj(recv,false);
572
661
  FXASSERT(!NIL_P(obj));
573
- VALUE result=rb_funcall(obj,func,5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
662
+ VALUE result=rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
574
663
  return static_cast<FXint>(NUM2INT(result));
575
664
  }
576
665
 
577
666
  // Call function with "long" return value
578
667
  template<class TYPE1, class TYPE2, class TYPE3>
579
- long FXRbCallLongMethod(FXObject* recv, ID func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3){
668
+ long FXRbCallLongMethod_gvlcb(FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3){
580
669
  VALUE obj=FXRbGetRubyObj(recv,false);
581
670
  FXASSERT(!NIL_P(obj));
582
- VALUE v=rb_funcall(obj,func,3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
671
+ VALUE v=rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
583
672
  return static_cast<long>(NUM2LONG(v));
584
673
  }
585
674
 
586
675
  // Call functions with "FXuint" return value
587
676
  template<class TYPE>
588
- FXuint FXRbCallUIntMethod(FXObject* recv, ID func, TYPE arg){
677
+ FXuint FXRbCallUIntMethod_gvlcb(FXObject* recv, const char *func, TYPE arg){
589
678
  VALUE obj=FXRbGetRubyObj(recv,false);
590
679
  FXASSERT(!NIL_P(obj));
591
- VALUE v=rb_funcall(obj,func,1,to_ruby(arg));
680
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
592
681
  return static_cast<FXuint>(NUM2UINT(v));
593
682
  }
594
683
 
595
684
  // Call functions with FXString return value
596
- FXString FXRbCallStringMethod(const FXObject* recv, ID func);
685
+ FXString FXRbCallStringMethod_gvlcb(const FXObject* recv, const char *func);
597
686
 
598
687
  // Call functions with const FXchar* return value
599
- const FXchar* FXRbCallCStringMethod(const FXObject* recv, ID func, const FXchar*, const FXchar*);
600
- const FXchar* FXRbCallCStringMethod(const FXObject* recv, ID func, const FXchar*, const FXchar*, const FXchar*);
688
+ const FXchar* FXRbCallCStringMethod_gvlcb(const FXObject* recv, const char *func, const FXchar*, const FXchar*);
689
+ const FXchar* FXRbCallCStringMethod_gvlcb(const FXObject* recv, const char *func, const FXchar*, const FXchar*, const FXchar*);
601
690
 
602
691
  // Call functions with "FXGLObject*" return value
603
- FXGLObject* FXRbCallGLObjectMethod(FXGLObject* recv,ID func);
604
- FXGLObject* FXRbCallGLObjectMethod(FXGLObject* recv,ID func,FXuint* path,FXint n);
605
- FXGLObject* FXRbCallGLObjectMethod(FXGLViewer* recv,ID func,FXint x,FXint y);
692
+ FXGLObject* FXRbCallGLObjectMethod_gvlcb(FXGLObject* recv,const char *func);
693
+ FXGLObject* FXRbCallGLObjectMethod_gvlcb(FXGLObject* recv,const char *func,FXuint* path,FXint n);
694
+ FXGLObject* FXRbCallGLObjectMethod_gvlcb(FXGLViewer* recv,const char *func,FXint x,FXint y);
606
695
 
607
696
  // Call functions with "FXGLObject**" return value
608
- FXGLObject** FXRbCallGLObjectArrayMethod(FXGLViewer* recv,ID func,FXint x,FXint y,FXint w,FXint h);
697
+ FXGLObject** FXRbCallGLObjectArrayMethod_gvlcb(FXGLViewer* recv,const char *func,FXint x,FXint y,FXint w,FXint h);
609
698
 
610
699
  // Call functions with "FXTreeItem*" return value
611
- FXTableItem* FXRbCallTableItemMethod(FXTable* recv,ID func,const FXString& text,FXIcon* icon,void* ptr);
700
+ FXTableItem* FXRbCallTableItemMethod_gvlcb(FXTable* recv,const char *func,const FXString& text,FXIcon* icon,void* ptr);
612
701
 
613
702
  // Call functions with "FXTreeItem*" return value
614
- FXTableItem* FXRbCallTableItemMethod(FXTable* recv,ID func,FXint,FXint,FXbool);
703
+ FXTableItem* FXRbCallTableItemMethod_gvlcb(FXTable* recv,const char *func,FXint,FXint,FXbool);
615
704
 
616
705
  // Call functions with "FXFileAssoc*" return value
617
- FXFileAssoc* FXRbCallFileAssocMethod(const FXFileDict* recv,ID func,const FXchar* pathname);
706
+ FXFileAssoc* FXRbCallFileAssocMethod_gvlcb(const FXFileDict* recv,const char *func,const FXchar* pathname);
618
707
 
619
708
  // Call functions with "FXIcon*" return value
620
- FXIcon* FXRbCallIconMethod(const FXTableItem* recv,ID func);
709
+ FXIcon* FXRbCallIconMethod_gvlcb(const FXTableItem* recv,const char *func);
621
710
 
622
711
  template<class TYPE1, class TYPE2>
623
- FXIcon* FXRbCallIconMethod(const FXIconSource *recv,ID func,TYPE1& arg1,const TYPE2& arg2){
712
+ FXIcon* FXRbCallIconMethod_gvlcb(const FXIconSource *recv,const char *func,TYPE1& arg1,const TYPE2& arg2){
624
713
  VALUE obj=FXRbGetRubyObj(recv,false);
625
714
  FXASSERT(!NIL_P(obj));
626
- VALUE result=rb_funcall(obj,func,2,to_ruby(arg1),to_ruby(arg2));
715
+ VALUE result=rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
627
716
  return NIL_P(result) ? 0 : reinterpret_cast<FXIcon*>(DATA_PTR(result));
628
717
  }
629
718
 
630
719
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4>
631
- FXIcon* FXRbCallIconMethod(const FXIconSource *recv,ID func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,const TYPE4& arg4){
720
+ FXIcon* FXRbCallIconMethod_gvlcb(const FXIconSource *recv,const char *func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,const TYPE4& arg4){
632
721
  VALUE obj=FXRbGetRubyObj(recv,false);
633
722
  FXASSERT(!NIL_P(obj));
634
- VALUE result=rb_funcall(obj,func,4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
723
+ VALUE result=rb_funcall(obj,rb_intern(func),4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
635
724
  return NIL_P(result) ? 0 : reinterpret_cast<FXIcon*>(DATA_PTR(result));
636
725
  }
637
726
 
638
727
  // Call functions with FXImage* return value
639
728
  template<class TYPE1, class TYPE2>
640
- FXImage* FXRbCallImageMethod(const FXIconSource *recv,ID func,TYPE1& arg1,const TYPE2& arg2){
729
+ FXImage* FXRbCallImageMethod_gvlcb(const FXIconSource *recv,const char *func,TYPE1& arg1,const TYPE2& arg2){
641
730
  VALUE obj=FXRbGetRubyObj(recv,false);
642
731
  FXASSERT(!NIL_P(obj));
643
- VALUE result=rb_funcall(obj,func,2,to_ruby(arg1),to_ruby(arg2));
732
+ VALUE result=rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
644
733
  return NIL_P(result) ? 0 : reinterpret_cast<FXImage*>(DATA_PTR(result));
645
734
  }
646
735
 
647
736
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4>
648
- FXImage* FXRbCallImageMethod(const FXIconSource *recv,ID func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,const TYPE4& arg4){
737
+ FXImage* FXRbCallImageMethod_gvlcb(const FXIconSource *recv,const char *func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,const TYPE4& arg4){
649
738
  VALUE obj=FXRbGetRubyObj(recv,false);
650
739
  FXASSERT(!NIL_P(obj));
651
- VALUE result=rb_funcall(obj,func,4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
740
+ VALUE result=rb_funcall(obj,rb_intern(func),4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
652
741
  return NIL_P(result) ? 0 : reinterpret_cast<FXImage*>(DATA_PTR(result));
653
742
  }
654
743
 
655
744
  // Call functions with "FXWindow*" return value
656
- FXWindow* FXRbCallWindowMethod(const FXTableItem* recv,ID func,FXTable* table);
745
+ FXWindow* FXRbCallWindowMethod_gvlcb(const FXTableItem* recv,const char *func,FXTable* table);
657
746
 
658
747
  // Call functions with "FXColor" return value
659
748
  template<class TYPE1, class TYPE2>
660
- FXColor FXRbCallColorMethod(FXDC* recv, ID func, TYPE1 arg1, TYPE2 arg2){
749
+ FXColor FXRbCallColorMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2){
661
750
  VALUE obj=FXRbGetRubyObj(recv,false);
662
751
  FXASSERT(!NIL_P(obj));
663
- VALUE v=rb_funcall(obj,func,2,to_ruby(arg1),to_ruby(arg2));
752
+ VALUE v=rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
664
753
  return static_cast<FXColor>(NUM2UINT(v));
665
754
  }
666
755
 
667
756
  // Call functions with "FXRangef" return value
668
- FXRangef FXRbCallRangeMethod(FXObject* recv,ID func);
757
+ FXRangef FXRbCallRangeMethod_gvlcb(FXObject* recv,const char *func);
669
758
 
670
759
  // Call functions with FXwchar return value
671
- FXwchar FXRbCallWCharMethod(const FXObject* recv,ID func);
760
+ FXwchar FXRbCallWCharMethod_gvlcb(const FXObject* recv,const char *func);
761
+
762
+ void FXRbCallSetDashes_gvlcb(FXDC* recv,const char *func,FXuint dashoffset,const FXchar *dashpattern,FXuint dashlength);
763
+
764
+ void FXRbCallDCDrawMethod_gvlcb(FXDC* recv, const char * func, FXint x,FXint y,const FXString& string);
765
+ void FXRbCallDCDrawMethod_gvlcb(FXDC* recv, const char * func, FXint x,FXint y,const FXchar* string,FXuint length);
672
766
 
673
767
  /**
674
768
  * Macro to set up class implementation.
@@ -694,6 +788,18 @@ FXwchar FXRbCallWCharMethod(const FXObject* recv,ID func);
694
788
  }
695
789
 
696
790
 
791
+ #define SORTFUNC(list, item) \
792
+ FXint list##_sortFunc_gvlcb(const item* a,const item* b);
793
+
794
+ SORTFUNC( FXRbComboBox, FXListItem )
795
+ SORTFUNC( FXRbFoldingList, FXFoldingItem )
796
+ SORTFUNC( FXRbIconList, FXIconItem )
797
+ SORTFUNC( FXRbList, FXListItem )
798
+ SORTFUNC( FXRbListBox, FXListItem )
799
+ SORTFUNC( FXRbTreeList, FXTreeItem )
800
+
801
+ #undef SORTFUNC
802
+
697
803
  // FXRuby classes
698
804
  #include "FXRbStream.h"
699
805
  #include "FXRbObject.h"