fxruby 1.6.29 → 1.6.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +12 -1
  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/fox16.rb +1 -0
  55. data/lib/fox16/thread.rb +51 -0
  56. data/lib/fox16/version.rb +1 -1
  57. data/rdoc-sources/FXApp.rb +5 -0
  58. data/rdoc-sources/FXId.rb +5 -0
  59. data/swig-interfaces/FXApp.i +14 -78
  60. data/swig-interfaces/macros.i +56 -0
  61. data/test/TC_FXApp.rb +60 -10
  62. data/test/TC_FXJPGImage.rb +47 -0
  63. metadata +24 -103
  64. checksums.yaml.gz.sig +0 -0
  65. data.tar.gz.sig +0 -0
  66. 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"