fxruby 1.6.36-x64-mingw32 → 1.6.37.rc1-x64-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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3cde95f49d756372079e10771ba5d7c143edc51a
4
- data.tar.gz: 942334d1a8e18419db53237d7847678332cf2324
3
+ metadata.gz: f526cc5181d1b89859829b21b2d28fb97e1b9174
4
+ data.tar.gz: '0284273aecb0357654a830e22149ad640a513a92'
5
5
  SHA512:
6
- metadata.gz: 41e9c0a0a50324569e46bbdb89ae684ef89a1a7e11d483823d76a8a92e995b1bce0861aa2c30cd2239690248f8df75bda998b73a25649a94d842391c34664453
7
- data.tar.gz: fae1628f002c90afa5ea84ab62603cdf25eb76704a639c6e872b140bdc3818b7ac6e7519536fda5d68e5208ef18982fbdb9159dea5bbc678e6eabeda079aa1b6
6
+ metadata.gz: aacfb1da98448a1a7b9c09e5b5713a32243598bc9553486347c64156d35fa257799c72d8f2c20c665204c793cee6ac80766406204d1474a8031a1632fcad18be
7
+ data.tar.gz: d2ffd98e94531a9fc4b74c1c42b1cc3cca430b493a80a895ddfa324fe7f732ab8da1b99ae0af87a3a287446a646606fb38299c30821bb3b7332a0043d2b94f7e
data/History.md CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.6.37.rc1 / 2017-06-16
2
+
3
+ * Add a 3rd type of FXRbObjects which is used for callbacks. Fixes #39
4
+
1
5
  === 1.6.36 / 2017-06-04
2
6
 
3
7
  * Support the fxruby source gem on Windows (only RubyInstaller-2.4).
data/Rakefile CHANGED
@@ -43,7 +43,7 @@ class FoxGemHelper < Bundler::GemHelper
43
43
  end
44
44
 
45
45
  def headline
46
- '([^\w]*)(\d+\.\d+\.\d+)([^\w]+)([2Y][0Y][0-9Y][0-9Y]-[0-1M][0-9M]-[0-3D][0-9D])([^\w]*|$)'
46
+ '([^\w]*)(\d+\.\d+\.\d+(?:\.\w+)?)([^\w]+)([2Y][0Y][0-9Y][0-9Y]-[0-1M][0-9M]-[0-3D][0-9D])([^\w]*|$)'
47
47
  end
48
48
 
49
49
  def reldate
@@ -84,6 +84,10 @@ VALUE FXRbNewPointerObj(void *ptr,swig_type_info* ty){
84
84
  return FXRbObjRegistry::main.NewBorrowedObj(ptr,ty);
85
85
  }
86
86
 
87
+ VALUE FXRbNewPointerObjCb(void *ptr,swig_type_info* ty){
88
+ return SWIG_Ruby_NewPointerObj(ptr, ty, 1);
89
+ }
90
+
87
91
 
88
92
  /**
89
93
  * FXRbIsBorrowed() returns true if the specified C++ object is one that
@@ -119,35 +123,31 @@ void FXRbUnregisterRubyObj(const void* foxObj){
119
123
  FXRbUnregisterRubyObj2(foxObj, true);
120
124
  }
121
125
 
122
- void FXRbUnregisterBorrowedRubyObj(const void* foxObj){
123
- FXRbUnregisterRubyObj2( foxObj, false );
124
- };
125
- void FXRbUnregisterBorrowedRubyObj(FXlong foxObj){
126
- };
127
- void FXRbUnregisterBorrowedRubyObj(FXString& foxObj){
128
- };
129
- void FXRbUnregisterBorrowedRubyObj(FXRegion& foxObj){
130
- FXRbUnregisterRubyObj2( &foxObj, false );
131
- };
132
- void FXRbUnregisterBorrowedRubyObj(FXRectangle& foxObj){
133
- FXRbUnregisterRubyObj2( &foxObj, false );
134
- };
135
- void FXRbUnregisterBorrowedRubyObj(FXDC& foxObj){
136
- FXRbUnregisterRubyObj2( &foxObj, false );
137
- };
138
-
139
- VALUE to_ruby(const FXObject* obj){
140
- if(obj!=0){
141
- FXString className=obj->getClassName();
142
- if(className.length()>3){
143
- if(className.left(4)=="FXRb"){ className.replace(0,4,"FX"); }
144
- }
145
- FXString desc=className+" *";
146
- return FXRbGetRubyObj(obj,desc.text());
147
- }
148
- return Qnil;
149
- }
150
126
 
127
+ /* We now have 3 types of FXObject wrappers:
128
+ *
129
+ * Own objects :
130
+ * These objects are allocated by FXRuby on the heap.
131
+ * They are free'd when the FXRuby wrapper is GC'ed and no other reference to the object exists.
132
+ * They are registered in FXRbObjRegistry as owned object.
133
+ * Tey are built per FXRbRegisterRubyObj().
134
+ *
135
+ * Borrowed objects :
136
+ * These objects are allocated by libfox on the heap.
137
+ * They are free'd by libfox when the owning fox object gets destroyed.
138
+ * Only the ruby wrapper is GC'ed.
139
+ * They are registered in FXRbObjRegistry as borrowed object.
140
+ * They are built per FXGetRubyObj().
141
+ *
142
+ * Callback objects :
143
+ * This is the new type.
144
+ * These objects are allocated by libfox on the heap or on the stack.
145
+ * They are wrapped for the time of one callback only, because stack memory is free'd afterwards.
146
+ * They are not registered in FXRbObjRegistry, but stored on the stack only.
147
+ * Therefore callback objects aren't re-used, but newly wrapped for each call.
148
+ * This is for arguments to ruby blocks.
149
+ * They are built per FXGetRubyObjCb().
150
+ */
151
151
 
152
152
  /**
153
153
  * Return the registered Ruby class instance associated with this
@@ -159,7 +159,11 @@ VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed, bool in_gc_mark){
159
159
 
160
160
  /**
161
161
  * Return the registered Ruby class instance associated with this
162
- * FOX object, or a new registered instance if not found.
162
+ * FOX object, or a new registered instance of a borrowed object if not found.
163
+ *
164
+ * This is suitable for objects on the heap, but not suitable for callbacks,
165
+ * because callback values might be on the stack.
166
+ * These stack objects should not be registered, because they are temporary only.
163
167
  */
164
168
  VALUE FXRbGetRubyObj(const void *foxObj,swig_type_info* ty){
165
169
  if(foxObj!=0){
@@ -180,6 +184,48 @@ VALUE FXRbGetRubyObj(const void *foxObj,const char *type){
180
184
  return FXRbGetRubyObj(foxObj, FXRbTypeQuery(type));
181
185
  }
182
186
 
187
+ /* Get an already registered object or wrap a new one for use in a callback.
188
+ *
189
+ * This is suitable for objects on the heap or on the stack.
190
+ * If an object is already registered per FXRbGetRubyObj(), this instance is returned.
191
+ * If it is not registered, a new wrapping object is built and returned, but is not registered.
192
+ */
193
+ VALUE FXRbGetRubyObjCb(const void *foxObj,swig_type_info* ty){
194
+ if(foxObj!=0){
195
+ VALUE rbObj=FXRbGetRubyObj(foxObj, true);
196
+ if( NIL_P(rbObj) ){
197
+ return FXRbNewPointerObjCb(const_cast<void*>(foxObj), ty);
198
+ }else{
199
+ // The requested type should match the registered class.
200
+ FXASSERT(SWIG_CheckConvert(rbObj, ty));
201
+ return rbObj;
202
+ }
203
+ }else{
204
+ return Qnil;
205
+ }
206
+ }
207
+
208
+ static VALUE to_ruby_obj(const FXObject* obj, VALUE (*get_value)(const void*, swig_type_info*)){
209
+ if(obj){
210
+ FXString className = obj->getClassName();
211
+ if(className.length() > 3){
212
+ if(className.left(4)=="FXRb"){ className.replace(0,4,"FX"); }
213
+ }
214
+ FXString desc = className+" *";
215
+ return get_value(obj, FXRbTypeQuery(desc.text()));
216
+ }
217
+ return Qnil;
218
+ }
219
+
220
+ VALUE to_ruby(const FXObject* obj){
221
+ return to_ruby_obj(obj, FXRbGetRubyObj);
222
+ }
223
+
224
+ VALUE to_ruby_cb(const FXObject* obj){
225
+ return to_ruby_obj(obj, FXRbGetRubyObjCb);
226
+ }
227
+
228
+
183
229
  /**
184
230
  * Look up the Ruby instance associated with this C++ object, if any, and mark
185
231
  * that instance as in use.
@@ -255,7 +301,7 @@ VALUE FXRbMakeArray(const FXchar* dashpattern,FXuint dashlength){
255
301
  VALUE FXRbMakeArray(const FXArc* arcs,FXuint narcs){
256
302
  VALUE result=rb_ary_new();
257
303
  for(FXuint i=0; i<narcs; i++)
258
- rb_ary_push(result,FXRbGetRubyObj(&arcs[i],"FXArc *"));
304
+ rb_ary_push(result, FXRbNewPointerObjCb(const_cast<FXArc*>(&arcs[i]), FXRbTypeQuery("FXArc *")));
259
305
  return result;
260
306
  }
261
307
 
@@ -263,7 +309,7 @@ VALUE FXRbMakeArray(const FXArc* arcs,FXuint narcs){
263
309
  VALUE FXRbMakeArray(const FXPoint* points,FXuint npoints){
264
310
  VALUE result=rb_ary_new();
265
311
  for(FXuint i=0; i<npoints; i++)
266
- rb_ary_push(result,FXRbGetRubyObj(&points[i],"FXPoint *"));
312
+ rb_ary_push(result,FXRbNewPointerObjCb(const_cast<FXPoint*>(&points[i]), FXRbTypeQuery("FXPoint *")));
267
313
  return result;
268
314
  }
269
315
 
@@ -271,7 +317,7 @@ VALUE FXRbMakeArray(const FXPoint* points,FXuint npoints){
271
317
  VALUE FXRbMakeArray(const FXRectangle* rectangles,FXuint nrectangles){
272
318
  VALUE result=rb_ary_new();
273
319
  for(FXuint i=0; i<nrectangles; i++)
274
- rb_ary_push(result,FXRbGetRubyObj(&rectangles[i],"FXRectangle *"));
320
+ rb_ary_push(result,FXRbNewPointerObjCb(const_cast<FXRectangle*>(&rectangles[i]), FXRbTypeQuery("FXRectangle *")));
275
321
  return result;
276
322
  }
277
323
 
@@ -279,7 +325,7 @@ VALUE FXRbMakeArray(const FXRectangle* rectangles,FXuint nrectangles){
279
325
  VALUE FXRbMakeArray(const FXSegment* segments,FXuint nsegments){
280
326
  VALUE result=rb_ary_new();
281
327
  for(FXuint i=0; i<nsegments; i++)
282
- rb_ary_push(result,FXRbGetRubyObj(&segments[i],"FXSegment *"));
328
+ rb_ary_push(result,FXRbNewPointerObjCb(const_cast<FXSegment*>(&segments[i]), FXRbTypeQuery("FXSegment *")));
283
329
  return result;
284
330
  }
285
331
 
@@ -394,13 +440,13 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
394
440
  type==SEL_PICKED ||
395
441
  type==SEL_SESSION_NOTIFY ||
396
442
  type==SEL_SESSION_CLOSED) {
397
- return to_ruby(reinterpret_cast<FXEvent*>(ptr));
443
+ return to_ruby_cb(reinterpret_cast<FXEvent*>(ptr));
398
444
  }
399
445
  else if(type==SEL_DRAGGED && !sender->isMemberOf(FXMETACLASS(FXGLViewer))){
400
- return to_ruby(reinterpret_cast<FXEvent*>(ptr));
446
+ return to_ruby_cb(reinterpret_cast<FXEvent*>(ptr));
401
447
  }
402
448
  else if(type==SEL_SIGNAL){
403
- return to_ruby(static_cast<int>(reinterpret_cast<FXuval>(ptr)));
449
+ return to_ruby_cb(static_cast<int>(reinterpret_cast<FXuval>(ptr)));
404
450
  }
405
451
  else if(type==SEL_IO_READ ||
406
452
  type==SEL_IO_WRITE ||
@@ -422,37 +468,37 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
422
468
  if(type==SEL_CHANGED||type==SEL_COMMAND) return Qnil;
423
469
  }
424
470
  else if(sender->isMemberOf(FXMETACLASS(FXArrowButton))){
425
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXuint>(reinterpret_cast<FXuval>(ptr)));
471
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXuint>(reinterpret_cast<FXuval>(ptr)));
426
472
  }
427
473
  else if(sender->isMemberOf(FXMETACLASS(FXPicker))){
428
- if(type==SEL_COMMAND || type==SEL_CHANGED) return to_ruby(reinterpret_cast<FXPoint*>(ptr));
474
+ if(type==SEL_COMMAND || type==SEL_CHANGED) return to_ruby_cb(reinterpret_cast<FXPoint*>(ptr));
429
475
  }
430
476
  else if(sender->isMemberOf(FXMETACLASS(FXButton))){
431
477
  if(type==SEL_CLICKED ||
432
478
  type==SEL_DOUBLECLICKED ||
433
479
  type==SEL_TRIPLECLICKED ||
434
- type==SEL_COMMAND) return to_ruby(static_cast<FXuint>(reinterpret_cast<FXuval>(ptr)));
480
+ type==SEL_COMMAND) return to_ruby_cb(static_cast<FXuint>(reinterpret_cast<FXuval>(ptr)));
435
481
  }
436
482
  else if(sender->isMemberOf(FXMETACLASS(FXCheckButton))){
437
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXuchar>(reinterpret_cast<FXuval>(ptr)));
483
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXuchar>(reinterpret_cast<FXuval>(ptr)));
438
484
  }
439
485
  else if(sender->isMemberOf(FXMETACLASS(FXColorBar))){
440
486
  if(type==SEL_CHANGED || type==SEL_COMMAND){
441
487
  FXfloat* hsv=reinterpret_cast<FXfloat*>(ptr);
442
- return rb_ary_new3(3,to_ruby(hsv[0]),to_ruby(hsv[1]),to_ruby(hsv[2]));
488
+ return rb_ary_new3(3,to_ruby_cb(hsv[0]),to_ruby_cb(hsv[1]),to_ruby_cb(hsv[2]));
443
489
  }
444
490
  }
445
491
  else if(sender->isMemberOf(FXMETACLASS(FXColorDialog))){
446
- if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby(static_cast<FXColor>(reinterpret_cast<FXuval>(ptr)));
492
+ if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby_cb(static_cast<FXColor>(reinterpret_cast<FXuval>(ptr)));
447
493
  }
448
494
  else if(sender->isMemberOf(FXMETACLASS(FXColorRing))){
449
495
  if(type==SEL_CHANGED || type==SEL_COMMAND){
450
496
  FXfloat* hsv=reinterpret_cast<FXfloat*>(ptr);
451
- return rb_ary_new3(3,to_ruby(hsv[0]),to_ruby(hsv[1]),to_ruby(hsv[2]));
497
+ return rb_ary_new3(3,to_ruby_cb(hsv[0]),to_ruby_cb(hsv[1]),to_ruby_cb(hsv[2]));
452
498
  }
453
499
  }
454
500
  else if(sender->isMemberOf(FXMETACLASS(FXColorSelector))){
455
- if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby(static_cast<FXColor>(reinterpret_cast<FXuval>(ptr)));
501
+ if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby_cb(static_cast<FXColor>(reinterpret_cast<FXuval>(ptr)));
456
502
  }
457
503
  else if(sender->isMemberOf(FXMETACLASS(FXColorWell))){
458
504
  if(type==SEL_CHANGED ||
@@ -460,29 +506,29 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
460
506
  type==SEL_CLICKED ||
461
507
  type==SEL_DOUBLECLICKED ||
462
508
  type==SEL_TRIPLECLICKED) {
463
- VALUE v=to_ruby(static_cast<FXColor>(reinterpret_cast<FXuval>(ptr)));
509
+ VALUE v=to_ruby_cb(static_cast<FXColor>(reinterpret_cast<FXuval>(ptr)));
464
510
  return v;
465
511
  }
466
512
  }
467
513
  else if(sender->isMemberOf(FXMETACLASS(FXColorWheel))){
468
514
  if(type==SEL_CHANGED || type==SEL_COMMAND){
469
515
  FXfloat* hsv=reinterpret_cast<FXfloat*>(ptr);
470
- return rb_ary_new3(3,to_ruby(hsv[0]),to_ruby(hsv[1]),to_ruby(hsv[2]));
516
+ return rb_ary_new3(3,to_ruby_cb(hsv[0]),to_ruby_cb(hsv[1]),to_ruby_cb(hsv[2]));
471
517
  }
472
518
  }
473
519
  else if(sender->isMemberOf(FXMETACLASS(FXComboBox))){
474
- if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby(reinterpret_cast<FXchar*>(ptr));
520
+ if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby_cb(reinterpret_cast<FXchar*>(ptr));
475
521
  }
476
522
  else if(sender->isMemberOf(FXMETACLASS(FXDataTarget))){
477
523
  if(type==SEL_COMMAND || type==SEL_CHANGED){
478
524
  if(recv->isMemberOf(FXMETACLASS(FXWindow))){
479
525
  switch(id){
480
526
  case FXWindow::ID_SETINTVALUE:
481
- return to_ruby(*reinterpret_cast<FXint*>(ptr));
527
+ return to_ruby_cb(*reinterpret_cast<FXint*>(ptr));
482
528
  case FXWindow::ID_SETREALVALUE:
483
- return to_ruby(*reinterpret_cast<FXdouble*>(ptr));
529
+ return to_ruby_cb(*reinterpret_cast<FXdouble*>(ptr));
484
530
  case FXWindow::ID_SETSTRINGVALUE:
485
- return to_ruby(*reinterpret_cast<FXString*>(ptr));
531
+ return to_ruby_cb(*reinterpret_cast<FXString*>(ptr));
486
532
  case FXWindow::ID_GETINTVALUE:
487
533
  case FXWindow::ID_GETREALVALUE:
488
534
  case FXWindow::ID_GETSTRINGVALUE:
@@ -500,20 +546,20 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
500
546
  }
501
547
  }
502
548
  else if(sender->isMemberOf(FXMETACLASS(FXDial))){
503
- if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
549
+ if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
504
550
  }
505
551
  else if(sender->isMemberOf(FXMETACLASS(FXDirBox))){
506
- if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby(reinterpret_cast<FXchar*>(ptr));
552
+ if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby_cb(reinterpret_cast<FXchar*>(ptr));
507
553
  }
508
554
  else if(sender->isMemberOf(FXMETACLASS(FXDockBar))){
509
- if(type==SEL_DOCKED || type==SEL_FLOATED) return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXDockSite *"));
555
+ if(type==SEL_DOCKED || type==SEL_FLOATED) return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXDockSite *"));
510
556
  }
511
557
  else if(sender->isMemberOf(FXMETACLASS(FXFileList))){
512
558
  if (type==SEL_CHANGED ||
513
559
  type==SEL_CLICKED ||
514
560
  type==SEL_DOUBLECLICKED ||
515
561
  type==SEL_TRIPLECLICKED ||
516
- type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
562
+ type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
517
563
  }
518
564
  else if(sender->isMemberOf(FXMETACLASS(FXFoldingList))){
519
565
  if(type==SEL_COLLAPSED ||
@@ -529,7 +575,7 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
529
575
  type==SEL_DESELECTED ||
530
576
  type==SEL_INSERTED ||
531
577
  type==SEL_DELETED){
532
- return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXFoldingItem *"));
578
+ return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXFoldingItem *"));
533
579
  }
534
580
  }
535
581
  else if(sender->isMemberOf(FXMETACLASS(FXGLViewer))){
@@ -538,13 +584,13 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
538
584
  type==SEL_DOUBLECLICKED ||
539
585
  type==SEL_TRIPLECLICKED ||
540
586
  type==SEL_DRAGGED){
541
- return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXGLObject *"));
587
+ return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXGLObject *"));
542
588
  }
543
589
  else if(type==SEL_COMMAND){
544
590
  if(id==FXWindow::ID_QUERY_MENU)
545
- return to_ruby(reinterpret_cast<FXEvent*>(ptr));
591
+ return to_ruby_cb(reinterpret_cast<FXEvent*>(ptr));
546
592
  else
547
- return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXGLObject *"));
593
+ return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXGLObject *"));
548
594
  }
549
595
  else if(type==SEL_LASSOED ||
550
596
  type==SEL_INSERTED ||
@@ -559,7 +605,7 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
559
605
  }
560
606
  else if(sender->isMemberOf(FXMETACLASS(FXGradientBar))){
561
607
  if(type==SEL_CHANGED){
562
- return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
608
+ return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
563
609
  }
564
610
  else if(type==SEL_SELECTED || type==SEL_DESELECTED){
565
611
  return Qnil;
@@ -571,7 +617,7 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
571
617
  type==SEL_CLICKED ||
572
618
  type==SEL_REPLACED ||
573
619
  type==SEL_INSERTED ||
574
- type==SEL_DELETED) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
620
+ type==SEL_DELETED) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
575
621
  }
576
622
  else if(sender->isMemberOf(FXMETACLASS(FXIconList))){
577
623
  if(type==SEL_CHANGED ||
@@ -583,10 +629,10 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
583
629
  type==SEL_DESELECTED ||
584
630
  type==SEL_REPLACED ||
585
631
  type==SEL_INSERTED ||
586
- type==SEL_DELETED) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
632
+ type==SEL_DELETED) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
587
633
  }
588
634
  else if(sender->isMemberOf(FXMETACLASS(FXKnob))){
589
- if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
635
+ if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
590
636
  }
591
637
  else if(sender->isMemberOf(FXMETACLASS(FXList))){
592
638
  if(type==SEL_CHANGED ||
@@ -598,10 +644,10 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
598
644
  type==SEL_REPLACED ||
599
645
  type==SEL_INSERTED ||
600
646
  type==SEL_DELETED ||
601
- type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
647
+ type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
602
648
  }
603
649
  else if(sender->isMemberOf(FXMETACLASS(FXListBox))){
604
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
650
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
605
651
  else if(type==SEL_CHANGED) return Qnil;
606
652
  }
607
653
  else if(sender->isMemberOf(FXMETACLASS(FXMDIChild))){
@@ -613,66 +659,66 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
613
659
  }
614
660
  else if(type==SEL_SELECTED ||
615
661
  type==SEL_DESELECTED){
616
- return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXMDIChild *"));
662
+ return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXMDIChild *"));
617
663
  }
618
664
  }
619
665
  else if(sender->isMemberOf(FXMETACLASS(FXMDIClient))){
620
- if(type==SEL_CHANGED) return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXMDIChild *"));
666
+ if(type==SEL_CHANGED) return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXMDIChild *"));
621
667
  }
622
668
  else if(sender->isMemberOf(FXMETACLASS(FXMenuCheck))){
623
- if(type==SEL_COMMAND) return to_ruby(reinterpret_cast<FXuval>(ptr));
669
+ if(type==SEL_COMMAND) return to_ruby_cb(reinterpret_cast<FXuval>(ptr));
624
670
  }
625
671
  else if(sender->isMemberOf(FXMETACLASS(FXMenuRadio))){
626
- if(type==SEL_COMMAND) return to_ruby(reinterpret_cast<FXuval>(ptr));
672
+ if(type==SEL_COMMAND) return to_ruby_cb(reinterpret_cast<FXuval>(ptr));
627
673
  }
628
674
  else if(sender->isMemberOf(FXMETACLASS(FXMenuCommand))){
629
- if(type==SEL_COMMAND) return to_ruby(true);
675
+ if(type==SEL_COMMAND) return to_ruby_cb(true);
630
676
  }
631
677
  else if(sender->isMemberOf(FXMETACLASS(FXOption))){
632
- if(type==SEL_COMMAND) return to_ruby(reinterpret_cast<FXEvent*>(ptr));
678
+ if(type==SEL_COMMAND) return to_ruby_cb(reinterpret_cast<FXEvent*>(ptr));
633
679
  }
634
680
  else if(sender->isMemberOf(FXMETACLASS(FXOptionMenu))){
635
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
681
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
636
682
  }
637
683
  else if(sender->isMemberOf(FXMETACLASS(FXRadioButton))){
638
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXuchar>(reinterpret_cast<FXuval>(ptr)));
684
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXuchar>(reinterpret_cast<FXuval>(ptr)));
639
685
  }
640
686
  else if(sender->isMemberOf(FXMETACLASS(FXRealSlider))){
641
687
  if(type==SEL_CHANGED || type==SEL_COMMAND)
642
- return to_ruby(*(reinterpret_cast<FXdouble *>(ptr)));
688
+ return to_ruby_cb(*(reinterpret_cast<FXdouble *>(ptr)));
643
689
  }
644
690
  else if(sender->isMemberOf(FXMETACLASS(FXRealSpinner))){
645
- if(type==SEL_COMMAND || type==SEL_CHANGED) return to_ruby(*(reinterpret_cast<FXdouble *>(ptr)));
691
+ if(type==SEL_COMMAND || type==SEL_CHANGED) return to_ruby_cb(*(reinterpret_cast<FXdouble *>(ptr)));
646
692
  }
647
693
  else if(sender->isMemberOf(FXMETACLASS(FXRecentFiles))){
648
- if(type==SEL_COMMAND) return to_ruby(reinterpret_cast<FXchar*>(ptr));
694
+ if(type==SEL_COMMAND) return to_ruby_cb(reinterpret_cast<FXchar*>(ptr));
649
695
  }
650
696
  else if(sender->isMemberOf(FXMETACLASS(FXRuler))){
651
697
  if(type==SEL_CHANGED) return Qnil;
652
698
  }
653
699
  else if(sender->isMemberOf(FXMETACLASS(FXScrollBar))){
654
- if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
700
+ if(type==SEL_CHANGED || type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
655
701
  }
656
702
  else if(sender->isMemberOf(FXMETACLASS(FXShutter))){
657
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
703
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
658
704
  }
659
705
  else if(sender->isMemberOf(FXMETACLASS(FXSlider))){
660
706
  if(type==SEL_CHANGED || type==SEL_COMMAND)
661
- return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
707
+ return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
662
708
  }
663
709
  else if(sender->isMemberOf(FXMETACLASS(FXSpinner))){
664
710
  if(type==SEL_CHANGED || type==SEL_COMMAND)
665
- return to_ruby(static_cast<FXint>(reinterpret_cast<FXuval>(ptr)));
711
+ return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXuval>(ptr)));
666
712
  }
667
713
  else if(sender->isMemberOf(FXMETACLASS(FXSplitter))){
668
714
  if(type==SEL_CHANGED || type==SEL_COMMAND)
669
- return to_ruby(reinterpret_cast<FXWindow *>(ptr));
715
+ return to_ruby_cb(reinterpret_cast<FXWindow *>(ptr));
670
716
  }
671
717
  else if(sender->isMemberOf(FXMETACLASS(FXSwitcher))){
672
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
718
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
673
719
  }
674
720
  else if(sender->isMemberOf(FXMETACLASS(FXTabBar))){
675
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
721
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
676
722
  }
677
723
  else if(sender->isMemberOf(FXMETACLASS(FXTable))){
678
724
  if(type==SEL_CLICKED ||
@@ -681,11 +727,11 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
681
727
  type==SEL_CHANGED ||
682
728
  type==SEL_COMMAND ||
683
729
  type==SEL_SELECTED ||
684
- type == SEL_DESELECTED) return to_ruby(reinterpret_cast<FXTablePos*>(ptr));
730
+ type == SEL_DESELECTED) return to_ruby_cb(reinterpret_cast<FXTablePos*>(ptr));
685
731
  else if(type == SEL_INSERTED ||
686
732
  type == SEL_DELETED ||
687
733
  type == SEL_REPLACED){
688
- return to_ruby(reinterpret_cast<FXTableRange*>(ptr));
734
+ return to_ruby_cb(reinterpret_cast<FXTableRange*>(ptr));
689
735
  }
690
736
  }
691
737
  else if(sender->isMemberOf(FXMETACLASS(FXText))){
@@ -702,31 +748,31 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
702
748
  }
703
749
  }
704
750
  else if(type==SEL_CHANGED){
705
- return to_ruby(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
751
+ return to_ruby_cb(static_cast<FXint>(reinterpret_cast<FXival>(ptr)));
706
752
  }
707
753
  else if(type==SEL_SELECTED ||
708
754
  type == SEL_DESELECTED) {
709
755
  FXint* what=reinterpret_cast<FXint*>(ptr);
710
756
  FXASSERT(what!=0);
711
757
  VALUE ary=rb_ary_new();
712
- rb_ary_push(ary,to_ruby(what[0])); // start position of text
713
- rb_ary_push(ary,to_ruby(what[1])); // length of text
758
+ rb_ary_push(ary,to_ruby_cb(what[0])); // start position of text
759
+ rb_ary_push(ary,to_ruby_cb(what[1])); // length of text
714
760
  return ary;
715
761
  }
716
762
  else if(type==SEL_INSERTED || type==SEL_DELETED || type==SEL_REPLACED) {
717
- return to_ruby(reinterpret_cast<FXTextChange*>(ptr));
763
+ return to_ruby_cb(reinterpret_cast<FXTextChange*>(ptr));
718
764
  }
719
765
  }
720
766
  else if(sender->isMemberOf(FXMETACLASS(FXTextField))){
721
767
  if(type==SEL_CHANGED ||
722
768
  type==SEL_COMMAND ||
723
- type==SEL_VERIFY) return to_ruby(reinterpret_cast<FXchar*>(ptr));
769
+ type==SEL_VERIFY) return to_ruby_cb(reinterpret_cast<FXchar*>(ptr));
724
770
  }
725
771
  else if(sender->isMemberOf(FXMETACLASS(FXToggleButton))){
726
- if(type==SEL_COMMAND) return to_ruby(static_cast<FXuchar>(reinterpret_cast<FXuval>(ptr)));
772
+ if(type==SEL_COMMAND) return to_ruby_cb(static_cast<FXuchar>(reinterpret_cast<FXuval>(ptr)));
727
773
  }
728
774
  else if(sender->isMemberOf(FXMETACLASS(FXToolBarTab))){
729
- if (type==SEL_COMMAND) return to_ruby(static_cast<FXbool>(reinterpret_cast<FXuval>(ptr)));
775
+ if (type==SEL_COMMAND) return to_ruby_cb(static_cast<FXbool>(reinterpret_cast<FXuval>(ptr)));
730
776
  }
731
777
  else if(sender->isMemberOf(FXMETACLASS(FXTopWindow))){
732
778
  if(type==SEL_MINIMIZE ||
@@ -737,7 +783,7 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
737
783
  }
738
784
  else if (type==SEL_SESSION_NOTIFY ||
739
785
  type==SEL_SESSION_CLOSED) {
740
- return to_ruby(reinterpret_cast<FXEvent*>(ptr));
786
+ return to_ruby_cb(reinterpret_cast<FXEvent*>(ptr));
741
787
  }
742
788
  }
743
789
  else if(sender->isMemberOf(FXMETACLASS(FXTreeList))){
@@ -754,17 +800,17 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s
754
800
  type==SEL_DESELECTED ||
755
801
  type==SEL_INSERTED ||
756
802
  type==SEL_DELETED){
757
- return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXTreeItem *"));
803
+ return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXTreeItem *"));
758
804
  }
759
805
  }
760
806
  else if(sender->isMemberOf(FXMETACLASS(FXTreeListBox))){
761
807
  if(type==SEL_CHANGED || type==SEL_COMMAND)
762
- return FXRbGetRubyObj(ptr,FXRbTypeQuery("FXTreeItem *"));
808
+ return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("FXTreeItem *"));
763
809
  }
764
810
  #ifdef WITH_FXSCINTILLA
765
811
  else if(sender->isMemberOf(FXMETACLASS(FXScintilla))){
766
812
  if(type==SEL_COMMAND){
767
- return FXRbGetRubyObj(ptr,FXRbTypeQuery("SCNotification *"));
813
+ return FXRbGetRubyObjCb(ptr,FXRbTypeQuery("SCNotification *"));
768
814
  }
769
815
  }
770
816
  #endif
@@ -1133,9 +1179,9 @@ FXbool FXRbCatchExceptions=FALSE;
1133
1179
  // Call the designated function and return its result (which should be a long).
1134
1180
  long FXRbHandleMessage_gvlcb(FXObject* recv,ID func,FXObject* sender,FXSelector key,void* ptr){
1135
1181
  FXRbHandleArgs hArgs;
1136
- hArgs.recv=to_ruby(recv);
1137
- hArgs.sender=to_ruby(sender);
1138
- hArgs.key=to_ruby(key);
1182
+ hArgs.recv=to_ruby_cb(recv);
1183
+ hArgs.sender=to_ruby_cb(sender);
1184
+ hArgs.key=to_ruby_cb(key);
1139
1185
  hArgs.data=FXRbConvertMessageData(sender,recv,key,ptr);
1140
1186
  hArgs.id=func;
1141
1187
  hArgs.nargs=3;
@@ -1152,10 +1198,6 @@ long FXRbHandleMessage_gvlcb(FXObject* recv,ID func,FXObject* sender,FXSelector
1152
1198
  retval=handle_body(reinterpret_cast<VALUE>(&hArgs));
1153
1199
  }
1154
1200
 
1155
- FXRbUnregisterBorrowedRubyObj(recv);
1156
- FXRbUnregisterBorrowedRubyObj(sender);
1157
- FXRbUnregisterBorrowedRubyObj(ptr);
1158
-
1159
1201
  /**
1160
1202
  * Process the return value. For boolean return values, convert "true"
1161
1203
  * to 1 and "false" to zero. For numeric types, convert it to a long value
@@ -1306,8 +1348,7 @@ FXTableItem* FXRbCallTableItemMethod_gvlcb(FXTable* recv,const char *func,const
1306
1348
  VALUE itemData=(ptr==0)?Qnil:reinterpret_cast<VALUE>(ptr);
1307
1349
  VALUE obj=FXRbGetRubyObj(recv,false);
1308
1350
  FXASSERT(!NIL_P(obj));
1309
- VALUE result=rb_funcall(obj,rb_intern(func),3,to_ruby(text),to_ruby(icon),itemData);
1310
- FXRbUnregisterBorrowedRubyObj(icon);
1351
+ VALUE result=rb_funcall(obj,rb_intern(func),3,to_ruby(text),to_ruby_cb(icon),itemData);
1311
1352
  return NIL_P(result)?0:reinterpret_cast<FXTableItem*>(DATA_PTR(result));
1312
1353
  }
1313
1354
 
@@ -1364,8 +1405,7 @@ FXIcon* FXRbCallIconMethod_gvlcb(const FXTableItem* recv,const char *func){
1364
1405
  FXWindow* FXRbCallWindowMethod_gvlcb(const FXTableItem* recv,const char *func,FXTable* table){
1365
1406
  VALUE obj=FXRbGetRubyObj(recv,false);
1366
1407
  FXASSERT(!NIL_P(obj));
1367
- VALUE result=rb_funcall(obj,rb_intern(func),1,to_ruby(table));
1368
- FXRbUnregisterBorrowedRubyObj(table);
1408
+ VALUE result=rb_funcall(obj,rb_intern(func),1,to_ruby_cb(table));
1369
1409
  return NIL_P(result) ? 0 : reinterpret_cast<FXWindow*>(DATA_PTR(result));
1370
1410
  }
1371
1411
 
@@ -64,6 +64,7 @@ VALUE showHelper(VALUE self, int argc, VALUE *argv, TYPE *p, swig_type_info *typ
64
64
 
65
65
  // Wrapper around SWIG_Ruby_NewPointerObj()
66
66
  VALUE FXRbNewPointerObj(void *ptr, swig_type_info *typeinfo);
67
+ VALUE FXRbNewPointerObjCb(void *ptr, swig_type_info *typeinfo);
67
68
  bool FXRbIsBorrowed(void* ptr);
68
69
  bool FXRbSetInGC(const void* ptr, bool enabled);
69
70
  bool FXRbIsInGC(const void* ptr);
@@ -86,12 +87,6 @@ void FXRbRegisterRubyObj(VALUE rubyObj, const void* foxObj);
86
87
  // Remove mapping for this FOX object and zero out any pointers
87
88
  // to this (now dead) C++ object held by any Ruby object
88
89
  void FXRbUnregisterRubyObj(const void* foxObj);
89
- void FXRbUnregisterBorrowedRubyObj(const void* foxObj);
90
- void FXRbUnregisterBorrowedRubyObj(FXlong foxObj);
91
- void FXRbUnregisterBorrowedRubyObj(FXString& foxObj);
92
- void FXRbUnregisterBorrowedRubyObj(FXRegion& foxObj);
93
- void FXRbUnregisterBorrowedRubyObj(FXRectangle& foxObj);
94
- void FXRbUnregisterBorrowedRubyObj(FXDC& foxObj);
95
90
 
96
91
  // Register an object that must be destroyed before FXApp is destroyed
97
92
  void FXRbRegisterAppSensitiveObject(FXObject* obj);
@@ -117,6 +112,8 @@ VALUE FXRbGetRubyObj(const void *foxObj, bool searchBoth, bool in_gc_mark=false)
117
112
  */
118
113
  VALUE FXRbGetRubyObj(const void *foxObj, const char *type);
119
114
  VALUE FXRbGetRubyObj(const void *foxObj, swig_type_info *type);
115
+ VALUE FXRbGetRubyObjCb(const void *foxObj, swig_type_info *type);
116
+
120
117
 
121
118
  // Mark this object as used for the garbage collector
122
119
  void FXRbGcMark(void *obj);
@@ -314,6 +311,61 @@ inline VALUE to_ruby(FXDC& dc){
314
311
  return FXRbGetRubyObj(reinterpret_cast<void*>(&dc),FXRbTypeQuery("FXDC *"));
315
312
  }
316
313
 
314
+
315
+
316
+
317
+ extern VALUE to_ruby_cb(const FXObject* obj);
318
+
319
+ inline VALUE to_ruby_cb(const FXRangef& range){
320
+ return FXRbNewPointerObjCb(static_cast<void*>(const_cast<FXRangef*>(&range)), FXRbTypeQuery("FXRangef *"));
321
+ }
322
+
323
+ inline VALUE to_ruby_cb(FXStream& store){
324
+ return (VALUE) 0; // FIXME
325
+ }
326
+
327
+ inline VALUE to_ruby_cb(const FXPoint* point){
328
+ return FXRbNewPointerObjCb(static_cast<void*>(const_cast<FXPoint*>(point)), FXRbTypeQuery("FXPoint *"));
329
+ }
330
+
331
+ inline VALUE to_ruby_cb(const FXSegment* segment){
332
+ return FXRbNewPointerObjCb(static_cast<void*>(const_cast<FXSegment*>(segment)), FXRbTypeQuery("FXSegment *"));
333
+ }
334
+
335
+ inline VALUE to_ruby_cb(const FXRectangle* rect){
336
+ return FXRbNewPointerObjCb(static_cast<void*>(const_cast<FXRectangle*>(rect)), FXRbTypeQuery("FXRectangle *"));
337
+ }
338
+
339
+ inline VALUE to_ruby_cb(const FXRectangle& rect){
340
+ return FXRbNewPointerObjCb(static_cast<void*>(const_cast<FXRectangle*>(&rect)), FXRbTypeQuery("FXRectangle *"));
341
+ }
342
+
343
+ inline VALUE to_ruby_cb(const FXArc* arc){
344
+ return FXRbNewPointerObjCb(static_cast<void*>(const_cast<FXArc*>(arc)), FXRbTypeQuery("FXArc *"));
345
+ }
346
+
347
+ inline VALUE to_ruby_cb(FXEvent* event){
348
+ return FXRbGetRubyObjCb(reinterpret_cast<void*>(event), FXRbTypeQuery("FXEvent *"));
349
+ }
350
+
351
+ inline VALUE to_ruby_cb(FXFontDesc* fontdesc){
352
+ return FXRbNewPointerObjCb(reinterpret_cast<void*>(fontdesc), FXRbTypeQuery("FXFontDesc *"));
353
+ }
354
+
355
+ inline VALUE to_ruby_cb(const FXFontDesc& fontdesc){
356
+ return FXRbNewPointerObjCb(reinterpret_cast<void*>(const_cast<FXFontDesc*>(&fontdesc)), FXRbTypeQuery("FXFontDesc *"));
357
+ }
358
+
359
+ inline VALUE to_ruby_cb(FXDC& dc){
360
+ return FXRbGetRubyObjCb(reinterpret_cast<void*>(&dc), FXRbTypeQuery("FXDC *"));
361
+ }
362
+
363
+ template<class TYPE>
364
+ VALUE to_ruby_cb(TYPE obj){
365
+ return to_ruby(obj);
366
+ }
367
+
368
+
317
369
  /**
318
370
  * Remember: FXID is typedef'd as an unsigned int on non-Windows platforms,
319
371
  * but as a void * on Win32.
@@ -353,16 +405,14 @@ void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func, TYPE& arg){
353
405
  VALUE obj=FXRbGetRubyObj(recv,false);
354
406
  FXASSERT(!NIL_P(obj));
355
407
  FXASSERT(!FXRbIsInGC(recv));
356
- rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
357
- FXRbUnregisterBorrowedRubyObj(&arg);
408
+ rb_funcall(obj,rb_intern(func),1,to_ruby_cb(arg));
358
409
  }
359
410
 
360
411
  template<class TYPE>
361
412
  void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE arg){
362
413
  VALUE obj=FXRbGetRubyObj(recv,false);
363
414
  FXASSERT(!NIL_P(obj));
364
- rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
365
- FXRbUnregisterBorrowedRubyObj(arg);
415
+ rb_funcall(obj,rb_intern(func),1,to_ruby_cb(arg));
366
416
  }
367
417
 
368
418
  template<class TYPE>
@@ -370,8 +420,7 @@ void FXRbCallVoidMethod_gvlcb(const FXObject* recv, const char *func, TYPE& arg)
370
420
  VALUE obj=FXRbGetRubyObj(recv,false);
371
421
  FXASSERT(!NIL_P(obj));
372
422
  FXASSERT(!FXRbIsInGC(recv));
373
- rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
374
- FXRbUnregisterBorrowedRubyObj(&arg);
423
+ rb_funcall(obj,rb_intern(func),1,to_ruby_cb(arg));
375
424
  }
376
425
 
377
426
  /* Two arguments */
@@ -379,18 +428,14 @@ template<class TYPE1, class TYPE2>
379
428
  void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func,TYPE1 arg1,TYPE2 arg2){
380
429
  VALUE obj=FXRbGetRubyObj(recv,false);
381
430
  FXASSERT(!NIL_P(obj));
382
- rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
383
- FXRbUnregisterBorrowedRubyObj(arg1);
384
- FXRbUnregisterBorrowedRubyObj(arg2);
431
+ rb_funcall(obj,rb_intern(func),2,to_ruby_cb(arg1),to_ruby_cb(arg2));
385
432
  }
386
433
 
387
434
  template<class TYPE1, class TYPE2>
388
435
  void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE1 arg1,TYPE2 arg2){
389
436
  VALUE obj=FXRbGetRubyObj(recv,false);
390
437
  FXASSERT(!NIL_P(obj));
391
- rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
392
- FXRbUnregisterBorrowedRubyObj(arg1);
393
- FXRbUnregisterBorrowedRubyObj(arg2);
438
+ rb_funcall(obj,rb_intern(func),2,to_ruby_cb(arg1),to_ruby_cb(arg2));
394
439
  }
395
440
 
396
441
  template<class TYPE>
@@ -399,9 +444,7 @@ void FXRbCallVoidArrayMethod(FXDC* recv,const char *func,TYPE objs,FXuint num){
399
444
  VALUE array=FXRbMakeArray(objs,num);
400
445
  FXASSERT(!NIL_P(obj));
401
446
  rb_funcall(obj,rb_intern(func),1,array);
402
- for(FXuint i=0; i<num; i++)
403
- FXRbUnregisterBorrowedRubyObj(&objs[i]);
404
- }
447
+ }
405
448
 
406
449
  FXTreeItem* FXRbCallTreeItemMethod_gvlcb(const FXTreeList* recv,const char *func,FXint x,FXint y);
407
450
  FXFoldingItem* FXRbCallFoldingItemMethod_gvlcb(const FXFoldingList* recv,const char *func,FXint x,FXint y);
@@ -411,20 +454,14 @@ template<class TYPE1, class TYPE2, class TYPE3>
411
454
  void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3){
412
455
  VALUE obj=FXRbGetRubyObj(recv,false);
413
456
  FXASSERT(!NIL_P(obj));
414
- rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
415
- FXRbUnregisterBorrowedRubyObj(arg1);
416
- FXRbUnregisterBorrowedRubyObj(arg2);
417
- FXRbUnregisterBorrowedRubyObj(arg3);
457
+ rb_funcall(obj,rb_intern(func),3,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3));
418
458
  }
419
459
 
420
460
  template<class TYPE1, class TYPE2, class TYPE3>
421
461
  void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3){
422
462
  VALUE obj=FXRbGetRubyObj(recv,false);
423
463
  FXASSERT(!NIL_P(obj));
424
- rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
425
- FXRbUnregisterBorrowedRubyObj(arg1);
426
- FXRbUnregisterBorrowedRubyObj(arg2);
427
- FXRbUnregisterBorrowedRubyObj(arg3);
464
+ rb_funcall(obj,rb_intern(func),3,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3));
428
465
  }
429
466
 
430
467
  /* Four arguments */
@@ -432,22 +469,14 @@ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4>
432
469
  void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4){
433
470
  VALUE obj=FXRbGetRubyObj(recv,false);
434
471
  FXASSERT(!NIL_P(obj));
435
- rb_funcall(obj,rb_intern(func),4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
436
- FXRbUnregisterBorrowedRubyObj(arg1);
437
- FXRbUnregisterBorrowedRubyObj(arg2);
438
- FXRbUnregisterBorrowedRubyObj(arg3);
439
- FXRbUnregisterBorrowedRubyObj(arg4);
472
+ rb_funcall(obj,rb_intern(func),4,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4));
440
473
  }
441
474
 
442
475
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4>
443
476
  void FXRbCallVoidMethod_gvlcb(FXDC* recv,const char *func,TYPE1 arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4){
444
477
  VALUE obj=FXRbGetRubyObj(recv,false);
445
478
  FXASSERT(!NIL_P(obj));
446
- rb_funcall(obj,rb_intern(func),4,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4));
447
- FXRbUnregisterBorrowedRubyObj(arg1);
448
- FXRbUnregisterBorrowedRubyObj(arg2);
449
- FXRbUnregisterBorrowedRubyObj(arg3);
450
- FXRbUnregisterBorrowedRubyObj(arg4);
479
+ rb_funcall(obj,rb_intern(func),4,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4));
451
480
  }
452
481
 
453
482
  /* Five arguments */
@@ -455,24 +484,14 @@ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
455
484
  void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func,TYPE1& arg1,TYPE2 arg2,TYPE3 arg3,TYPE4 arg4,TYPE5 arg5){
456
485
  VALUE obj=FXRbGetRubyObj(recv,false);
457
486
  FXASSERT(!NIL_P(obj));
458
- rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
459
- FXRbUnregisterBorrowedRubyObj(arg1);
460
- FXRbUnregisterBorrowedRubyObj(arg2);
461
- FXRbUnregisterBorrowedRubyObj(arg3);
462
- FXRbUnregisterBorrowedRubyObj(arg4);
463
- FXRbUnregisterBorrowedRubyObj(arg5);
487
+ rb_funcall(obj,rb_intern(func),5,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5));
464
488
  }
465
489
 
466
490
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
467
491
  void FXRbCallVoidMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
468
492
  VALUE obj=FXRbGetRubyObj(recv,false);
469
493
  FXASSERT(!NIL_P(obj));
470
- rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
471
- FXRbUnregisterBorrowedRubyObj(arg1);
472
- FXRbUnregisterBorrowedRubyObj(arg2);
473
- FXRbUnregisterBorrowedRubyObj(arg3);
474
- FXRbUnregisterBorrowedRubyObj(arg4);
475
- FXRbUnregisterBorrowedRubyObj(arg5);
494
+ rb_funcall(obj,rb_intern(func),5,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5));
476
495
  }
477
496
 
478
497
  /* Six arguments */
@@ -480,26 +499,14 @@ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class
480
499
  void FXRbCallVoidMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2& arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6){
481
500
  VALUE obj=FXRbGetRubyObj(recv,false);
482
501
  FXASSERT(!NIL_P(obj));
483
- 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));
484
- FXRbUnregisterBorrowedRubyObj(arg1);
485
- FXRbUnregisterBorrowedRubyObj(arg2);
486
- FXRbUnregisterBorrowedRubyObj(arg3);
487
- FXRbUnregisterBorrowedRubyObj(arg4);
488
- FXRbUnregisterBorrowedRubyObj(arg5);
489
- FXRbUnregisterBorrowedRubyObj(arg6);
502
+ rb_funcall(obj,rb_intern(func),6,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5),to_ruby_cb(arg6));
490
503
  }
491
504
 
492
505
  template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class TYPE6>
493
506
  void FXRbCallVoidMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6){
494
507
  VALUE obj=FXRbGetRubyObj(recv,false);
495
508
  FXASSERT(!NIL_P(obj));
496
- 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));
497
- FXRbUnregisterBorrowedRubyObj(arg1);
498
- FXRbUnregisterBorrowedRubyObj(arg2);
499
- FXRbUnregisterBorrowedRubyObj(arg3);
500
- FXRbUnregisterBorrowedRubyObj(arg4);
501
- FXRbUnregisterBorrowedRubyObj(arg5);
502
- FXRbUnregisterBorrowedRubyObj(arg6);
509
+ rb_funcall(obj,rb_intern(func),6,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5),to_ruby_cb(arg6));
503
510
  }
504
511
 
505
512
  /* Seven arguments */
@@ -507,14 +514,7 @@ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class
507
514
  void FXRbCallVoidMethod_gvlcb(FXDC* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5, TYPE6 arg6, TYPE7 arg7){
508
515
  VALUE obj=FXRbGetRubyObj(recv,false);
509
516
  FXASSERT(!NIL_P(obj));
510
- 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));
511
- FXRbUnregisterBorrowedRubyObj(arg1);
512
- FXRbUnregisterBorrowedRubyObj(arg2);
513
- FXRbUnregisterBorrowedRubyObj(arg3);
514
- FXRbUnregisterBorrowedRubyObj(arg4);
515
- FXRbUnregisterBorrowedRubyObj(arg5);
516
- FXRbUnregisterBorrowedRubyObj(arg6);
517
- FXRbUnregisterBorrowedRubyObj(arg7);
517
+ rb_funcall(obj,rb_intern(func),7,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5),to_ruby_cb(arg6),to_ruby_cb(arg7));
518
518
  }
519
519
 
520
520
  /* Nine arguments */
@@ -522,16 +522,7 @@ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5, class
522
522
  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){
523
523
  VALUE obj=FXRbGetRubyObj(recv,false);
524
524
  FXASSERT(!NIL_P(obj));
525
- 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));
526
- FXRbUnregisterBorrowedRubyObj(arg1);
527
- FXRbUnregisterBorrowedRubyObj(arg2);
528
- FXRbUnregisterBorrowedRubyObj(arg3);
529
- FXRbUnregisterBorrowedRubyObj(arg4);
530
- FXRbUnregisterBorrowedRubyObj(arg5);
531
- FXRbUnregisterBorrowedRubyObj(arg6);
532
- FXRbUnregisterBorrowedRubyObj(arg7);
533
- FXRbUnregisterBorrowedRubyObj(arg8);
534
- FXRbUnregisterBorrowedRubyObj(arg9);
525
+ rb_funcall(obj,rb_intern(func),9,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5),to_ruby_cb(arg6),to_ruby_cb(arg7), to_ruby_cb(arg8), to_ruby_cb(arg9));
535
526
  }
536
527
 
537
528
  /* Eleven arguments (!) */
@@ -539,18 +530,7 @@ template<class TYPE1,class TYPE2,class TYPE3,class TYPE4,class TYPE5,class TYPE6
539
530
  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){
540
531
  VALUE obj=FXRbGetRubyObj(recv,false);
541
532
  FXASSERT(!NIL_P(obj));
542
- 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));
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);
552
- FXRbUnregisterBorrowedRubyObj(arg10);
553
- FXRbUnregisterBorrowedRubyObj(arg11);
533
+ rb_funcall(obj,rb_intern(func),11,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5),to_ruby_cb(arg6),to_ruby_cb(arg7),to_ruby_cb(arg8),to_ruby_cb(arg9),to_ruby_cb(arg10),to_ruby_cb(arg11));
554
534
  }
555
535
 
556
536
  // Call function with "FXbool" return value
@@ -561,13 +541,13 @@ inline bool FXRbCallBoolMethod_gvlcb(FXStream* recv,const char *func){
561
541
 
562
542
  template<class TYPE1>
563
543
  bool FXRbCallBoolMethod_gvlcb(FXStream* recv,const char *func,TYPE1 arg){
564
- VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),1,to_ruby(arg));
544
+ VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),1,to_ruby_cb(arg));
565
545
  return (v==Qtrue);
566
546
  }
567
547
 
568
548
  template<class TYPE1,class TYPE2>
569
549
  bool FXRbCallBoolMethod_gvlcb(FXStream* recv,const char *func,TYPE1 arg1,TYPE2 arg2){
570
- VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
550
+ VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),2,to_ruby_cb(arg1),to_ruby_cb(arg2));
571
551
  return (v==Qtrue);
572
552
  }
573
553
 
@@ -577,13 +557,13 @@ template<class TYPE>
577
557
  bool FXRbCallBoolMethod_gvlcb(FXObject* recv, const char *func, TYPE& arg){
578
558
  VALUE obj=FXRbGetRubyObj(recv,false);
579
559
  FXASSERT(!NIL_P(obj));
580
- VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
560
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby_cb(arg));
581
561
  return (v==Qtrue);
582
562
  }
583
563
 
584
564
  template<class TYPE>
585
565
  bool FXRbCallBoolMethod_gvlcb(const FXObject* recv,const char *func,TYPE& arg){
586
- VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),1,to_ruby(arg));
566
+ VALUE v=rb_funcall(FXRbGetRubyObj(recv,false),rb_intern(func),1,to_ruby_cb(arg));
587
567
  return (v==Qtrue);
588
568
  }
589
569
 
@@ -591,7 +571,7 @@ template<class TYPE1, class TYPE2>
591
571
  bool FXRbCallBoolMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2){
592
572
  VALUE obj=FXRbGetRubyObj(recv,false);
593
573
  FXASSERT(!NIL_P(obj));
594
- VALUE v=rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
574
+ VALUE v=rb_funcall(obj,rb_intern(func),2,to_ruby_cb(arg1),to_ruby_cb(arg2));
595
575
  return (v==Qtrue);
596
576
  }
597
577
 
@@ -599,7 +579,7 @@ template<class TYPE1, class TYPE2, class TYPE3>
599
579
  bool FXRbCallBoolMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3){
600
580
  VALUE obj=FXRbGetRubyObj(recv,false);
601
581
  FXASSERT(!NIL_P(obj));
602
- VALUE v=rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
582
+ VALUE v=rb_funcall(obj,rb_intern(func),3,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3));
603
583
  return (v==Qtrue);
604
584
  }
605
585
 
@@ -607,7 +587,7 @@ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
607
587
  bool FXRbCallBoolMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
608
588
  VALUE obj=FXRbGetRubyObj(recv,false);
609
589
  FXASSERT(!NIL_P(obj));
610
- VALUE v=rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
590
+ VALUE v=rb_funcall(obj,rb_intern(func),5,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5));
611
591
  return (v==Qtrue);
612
592
  }
613
593
 
@@ -618,7 +598,7 @@ template<class TYPE>
618
598
  FXint FXRbCallIntMethod_gvlcb(FXObject* recv, const char *func, TYPE arg){
619
599
  VALUE obj=FXRbGetRubyObj(recv,false);
620
600
  FXASSERT(!NIL_P(obj));
621
- VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
601
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby_cb(arg));
622
602
  return static_cast<FXint>(NUM2INT(v));
623
603
  }
624
604
 
@@ -626,7 +606,7 @@ template<class TYPE>
626
606
  FXint FXRbCallIntMethod_gvlcb(const FXObject* recv, const char *func, TYPE arg){
627
607
  VALUE obj=FXRbGetRubyObj(recv,false);
628
608
  FXASSERT(!NIL_P(obj));
629
- VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
609
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby_cb(arg));
630
610
  return static_cast<FXint>(NUM2INT(v));
631
611
  }
632
612
 
@@ -634,7 +614,7 @@ template<class TYPE1, class TYPE2>
634
614
  FXint FXRbCallIntMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2){
635
615
  VALUE obj=FXRbGetRubyObj(recv,false);
636
616
  FXASSERT(!NIL_P(obj));
637
- VALUE result=rb_funcall(obj,rb_intern(func),2,to_ruby(arg1),to_ruby(arg2));
617
+ VALUE result=rb_funcall(obj,rb_intern(func),2,to_ruby_cb(arg1),to_ruby_cb(arg2));
638
618
  return static_cast<FXint>(NUM2INT(result));
639
619
  }
640
620
 
@@ -642,7 +622,7 @@ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4, class TYPE5>
642
622
  FXint FXRbCallIntMethod_gvlcb(const FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3, TYPE4 arg4, TYPE5 arg5){
643
623
  VALUE obj=FXRbGetRubyObj(recv,false);
644
624
  FXASSERT(!NIL_P(obj));
645
- VALUE result=rb_funcall(obj,rb_intern(func),5,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3),to_ruby(arg4),to_ruby(arg5));
625
+ VALUE result=rb_funcall(obj,rb_intern(func),5,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3),to_ruby_cb(arg4),to_ruby_cb(arg5));
646
626
  return static_cast<FXint>(NUM2INT(result));
647
627
  }
648
628
 
@@ -651,7 +631,7 @@ template<class TYPE1, class TYPE2, class TYPE3>
651
631
  long FXRbCallLongMethod_gvlcb(FXObject* recv, const char *func, TYPE1 arg1, TYPE2 arg2, TYPE3 arg3){
652
632
  VALUE obj=FXRbGetRubyObj(recv,false);
653
633
  FXASSERT(!NIL_P(obj));
654
- VALUE v=rb_funcall(obj,rb_intern(func),3,to_ruby(arg1),to_ruby(arg2),to_ruby(arg3));
634
+ VALUE v=rb_funcall(obj,rb_intern(func),3,to_ruby_cb(arg1),to_ruby_cb(arg2),to_ruby_cb(arg3));
655
635
  return static_cast<long>(NUM2LONG(v));
656
636
  }
657
637
 
@@ -660,7 +640,7 @@ template<class TYPE>
660
640
  FXuint FXRbCallUIntMethod_gvlcb(FXObject* recv, const char *func, TYPE arg){
661
641
  VALUE obj=FXRbGetRubyObj(recv,false);
662
642
  FXASSERT(!NIL_P(obj));
663
- VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
643
+ VALUE v=rb_funcall(obj,rb_intern(func),1,to_ruby_cb(arg));
664
644
  return static_cast<FXuint>(NUM2UINT(v));
665
645
  }
666
646
 
data/lib/fox16/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Fox
2
2
  def Fox.fxrubyversion
3
- "1.6.36"
3
+ "1.6.37.rc1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fxruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.36
4
+ version: 1.6.37.rc1
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Lyle Johnson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-06-04 00:00:00.000000000 Z
12
+ date: 2017-06-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mini_portile2
@@ -1009,9 +1009,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1009
1009
  version: '2.5'
1010
1010
  required_rubygems_version: !ruby/object:Gem::Requirement
1011
1011
  requirements:
1012
- - - ">="
1012
+ - - ">"
1013
1013
  - !ruby/object:Gem::Version
1014
- version: '0'
1014
+ version: 1.3.1
1015
1015
  requirements: []
1016
1016
  rubyforge_project:
1017
1017
  rubygems_version: 2.6.12