fxruby 1.6.36-x64-mingw32 → 1.6.37.rc1-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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