rice 4.0.4 → 4.2.0
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 +4 -4
- data/CHANGELOG.md +37 -0
- data/CONTRIBUTORS.md +2 -0
- data/Rakefile +1 -1
- data/include/rice/rice.hpp +2851 -1955
- data/include/rice/stl.hpp +1654 -287
- data/lib/mkmf-rice.rb +5 -2
- data/lib/version.rb +1 -1
- data/rice/Arg.hpp +6 -6
- data/rice/Arg.ipp +8 -9
- data/rice/Constructor.hpp +2 -2
- data/rice/Data_Object.ipp +69 -15
- data/rice/Data_Object_defn.hpp +1 -15
- data/rice/Data_Type.ipp +56 -86
- data/rice/Data_Type_defn.hpp +14 -17
- data/rice/Director.hpp +0 -1
- data/rice/Enum.ipp +31 -22
- data/rice/Exception.ipp +2 -3
- data/rice/Exception_defn.hpp +5 -5
- data/rice/HandlerRegistration.hpp +15 -0
- data/rice/Return.hpp +5 -4
- data/rice/Return.ipp +8 -3
- data/rice/detail/ExceptionHandler.hpp +8 -0
- data/rice/detail/ExceptionHandler.ipp +28 -0
- data/rice/detail/{Exception_Handler_defn.hpp → ExceptionHandler_defn.hpp} +17 -21
- data/rice/detail/HandlerRegistry.hpp +51 -0
- data/rice/detail/HandlerRegistry.ipp +20 -0
- data/rice/detail/InstanceRegistry.hpp +34 -0
- data/rice/detail/InstanceRegistry.ipp +50 -0
- data/rice/detail/MethodInfo.ipp +1 -1
- data/rice/detail/NativeAttribute.hpp +26 -15
- data/rice/detail/NativeAttribute.ipp +76 -47
- data/rice/detail/NativeFunction.hpp +64 -14
- data/rice/detail/NativeFunction.ipp +138 -86
- data/rice/detail/NativeIterator.hpp +49 -0
- data/rice/detail/NativeIterator.ipp +102 -0
- data/rice/detail/NativeRegistry.hpp +31 -0
- data/rice/detail/{method_data.ipp → NativeRegistry.ipp} +20 -16
- data/rice/detail/Registries.hpp +26 -0
- data/rice/detail/Registries.ipp +23 -0
- data/rice/detail/RubyFunction.hpp +6 -11
- data/rice/detail/RubyFunction.ipp +10 -22
- data/rice/detail/Type.hpp +1 -1
- data/rice/detail/Type.ipp +2 -2
- data/rice/detail/TypeRegistry.hpp +8 -11
- data/rice/detail/TypeRegistry.ipp +3 -28
- data/rice/detail/Wrapper.hpp +0 -2
- data/rice/detail/Wrapper.ipp +74 -24
- data/rice/detail/cpp_protect.hpp +93 -0
- data/rice/detail/default_allocation_func.ipp +1 -1
- data/rice/detail/from_ruby.ipp +206 -2
- data/rice/detail/to_ruby.ipp +39 -5
- data/rice/detail/to_ruby_defn.hpp +1 -1
- data/rice/forward_declares.ipp +6 -0
- data/rice/global_function.hpp +0 -4
- data/rice/global_function.ipp +0 -6
- data/rice/rice.hpp +29 -24
- data/rice/stl.hpp +6 -1
- data/sample/callbacks/extconf.rb +0 -1
- data/sample/enum/extconf.rb +0 -1
- data/sample/inheritance/extconf.rb +0 -1
- data/sample/map/extconf.rb +0 -1
- data/test/embed_ruby.cpp +6 -15
- data/test/ext/t1/extconf.rb +0 -1
- data/test/ext/t2/extconf.rb +0 -1
- data/test/extconf.rb +0 -1
- data/test/test_Array.cpp +20 -24
- data/test/test_Attribute.cpp +6 -6
- data/test/test_Class.cpp +8 -47
- data/test/test_Constructor.cpp +0 -2
- data/test/test_Data_Object.cpp +25 -11
- data/test/test_Data_Type.cpp +124 -28
- data/test/test_Director.cpp +12 -13
- data/test/test_Enum.cpp +65 -26
- data/test/test_Inheritance.cpp +9 -9
- data/test/test_Iterator.cpp +134 -5
- data/test/test_Keep_Alive.cpp +7 -7
- data/test/test_Keep_Alive_No_Wrapper.cpp +80 -0
- data/test/test_Memory_Management.cpp +1 -1
- data/test/test_Module.cpp +25 -62
- data/test/test_Object.cpp +75 -3
- data/test/test_Ownership.cpp +12 -13
- data/test/test_Self.cpp +12 -13
- data/test/test_Stl_Map.cpp +696 -0
- data/test/test_Stl_Optional.cpp +3 -3
- data/test/test_Stl_Pair.cpp +38 -2
- data/test/test_Stl_Reference_Wrapper.cpp +102 -0
- data/test/test_Stl_SmartPointer.cpp +49 -9
- data/test/test_Stl_String.cpp +5 -2
- data/test/test_Stl_Unordered_Map.cpp +697 -0
- data/test/test_Stl_Variant.cpp +346 -0
- data/test/test_Stl_Vector.cpp +200 -41
- data/test/test_Struct.cpp +3 -3
- data/test/test_To_From_Ruby.cpp +8 -2
- data/test/test_Tracking.cpp +239 -0
- data/test/unittest.hpp +21 -4
- metadata +24 -13
- data/rice/detail/Exception_Handler.hpp +0 -8
- data/rice/detail/Exception_Handler.ipp +0 -28
- data/rice/detail/Iterator.hpp +0 -23
- data/rice/detail/Iterator.ipp +0 -47
- data/rice/detail/function_traits.hpp +0 -124
- data/rice/detail/method_data.hpp +0 -29
- data/rice/detail/rice_traits.hpp +0 -116
- data/rice/ruby_try_catch.hpp +0 -86
data/rice/detail/from_ruby.ipp
CHANGED
@@ -22,6 +22,11 @@ namespace Rice::detail
|
|
22
22
|
{
|
23
23
|
}
|
24
24
|
|
25
|
+
bool is_convertible(VALUE value)
|
26
|
+
{
|
27
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
28
|
+
}
|
29
|
+
|
25
30
|
short convert(VALUE value)
|
26
31
|
{
|
27
32
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -48,6 +53,11 @@ namespace Rice::detail
|
|
48
53
|
{
|
49
54
|
}
|
50
55
|
|
56
|
+
bool is_convertible(VALUE value)
|
57
|
+
{
|
58
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
59
|
+
}
|
60
|
+
|
51
61
|
short& convert(VALUE value)
|
52
62
|
{
|
53
63
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -70,6 +80,11 @@ namespace Rice::detail
|
|
70
80
|
class From_Ruby<short*>
|
71
81
|
{
|
72
82
|
public:
|
83
|
+
bool is_convertible(VALUE value)
|
84
|
+
{
|
85
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
86
|
+
}
|
87
|
+
|
73
88
|
short* convert(VALUE value)
|
74
89
|
{
|
75
90
|
if (value == Qnil)
|
@@ -98,6 +113,11 @@ namespace Rice::detail
|
|
98
113
|
{
|
99
114
|
}
|
100
115
|
|
116
|
+
bool is_convertible(VALUE value)
|
117
|
+
{
|
118
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
119
|
+
}
|
120
|
+
|
101
121
|
int convert(VALUE value)
|
102
122
|
{
|
103
123
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -124,6 +144,11 @@ namespace Rice::detail
|
|
124
144
|
{
|
125
145
|
}
|
126
146
|
|
147
|
+
bool is_convertible(VALUE value)
|
148
|
+
{
|
149
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
150
|
+
}
|
151
|
+
|
127
152
|
int& convert(VALUE value)
|
128
153
|
{
|
129
154
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -146,6 +171,11 @@ namespace Rice::detail
|
|
146
171
|
class From_Ruby<int*>
|
147
172
|
{
|
148
173
|
public:
|
174
|
+
bool is_convertible(VALUE value)
|
175
|
+
{
|
176
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
177
|
+
}
|
178
|
+
|
149
179
|
int* convert(VALUE value)
|
150
180
|
{
|
151
181
|
if (value == Qnil)
|
@@ -174,6 +204,11 @@ namespace Rice::detail
|
|
174
204
|
{
|
175
205
|
}
|
176
206
|
|
207
|
+
bool is_convertible(VALUE value)
|
208
|
+
{
|
209
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
210
|
+
}
|
211
|
+
|
177
212
|
long convert(VALUE value)
|
178
213
|
{
|
179
214
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -200,6 +235,11 @@ namespace Rice::detail
|
|
200
235
|
{
|
201
236
|
}
|
202
237
|
|
238
|
+
bool is_convertible(VALUE value)
|
239
|
+
{
|
240
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
241
|
+
}
|
242
|
+
|
203
243
|
long& convert(VALUE value)
|
204
244
|
{
|
205
245
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -222,6 +262,11 @@ namespace Rice::detail
|
|
222
262
|
class From_Ruby<long*>
|
223
263
|
{
|
224
264
|
public:
|
265
|
+
bool is_convertible(VALUE value)
|
266
|
+
{
|
267
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
268
|
+
}
|
269
|
+
|
225
270
|
long* convert(VALUE value)
|
226
271
|
{
|
227
272
|
if (value == Qnil)
|
@@ -250,6 +295,11 @@ namespace Rice::detail
|
|
250
295
|
{
|
251
296
|
}
|
252
297
|
|
298
|
+
bool is_convertible(VALUE value)
|
299
|
+
{
|
300
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
301
|
+
}
|
302
|
+
|
253
303
|
long long convert(VALUE value)
|
254
304
|
{
|
255
305
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -276,6 +326,11 @@ namespace Rice::detail
|
|
276
326
|
{
|
277
327
|
}
|
278
328
|
|
329
|
+
bool is_convertible(VALUE value)
|
330
|
+
{
|
331
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
332
|
+
}
|
333
|
+
|
279
334
|
long long& convert(VALUE value)
|
280
335
|
{
|
281
336
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -298,6 +353,11 @@ namespace Rice::detail
|
|
298
353
|
class From_Ruby<long long*>
|
299
354
|
{
|
300
355
|
public:
|
356
|
+
bool is_convertible(VALUE value)
|
357
|
+
{
|
358
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
359
|
+
}
|
360
|
+
|
301
361
|
long long* convert(VALUE value)
|
302
362
|
{
|
303
363
|
if (value == Qnil)
|
@@ -326,6 +386,11 @@ namespace Rice::detail
|
|
326
386
|
{
|
327
387
|
}
|
328
388
|
|
389
|
+
bool is_convertible(VALUE value)
|
390
|
+
{
|
391
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
392
|
+
}
|
393
|
+
|
329
394
|
unsigned short convert(VALUE value)
|
330
395
|
{
|
331
396
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -352,6 +417,11 @@ namespace Rice::detail
|
|
352
417
|
{
|
353
418
|
}
|
354
419
|
|
420
|
+
bool is_convertible(VALUE value)
|
421
|
+
{
|
422
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
423
|
+
}
|
424
|
+
|
355
425
|
unsigned short& convert(VALUE value)
|
356
426
|
{
|
357
427
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -374,6 +444,11 @@ namespace Rice::detail
|
|
374
444
|
class From_Ruby<unsigned short*>
|
375
445
|
{
|
376
446
|
public:
|
447
|
+
bool is_convertible(VALUE value)
|
448
|
+
{
|
449
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
450
|
+
}
|
451
|
+
|
377
452
|
unsigned short* convert(VALUE value)
|
378
453
|
{
|
379
454
|
if (value == Qnil)
|
@@ -402,6 +477,11 @@ namespace Rice::detail
|
|
402
477
|
{
|
403
478
|
}
|
404
479
|
|
480
|
+
bool is_convertible(VALUE value)
|
481
|
+
{
|
482
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
483
|
+
}
|
484
|
+
|
405
485
|
unsigned int convert(VALUE value)
|
406
486
|
{
|
407
487
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -428,6 +508,11 @@ namespace Rice::detail
|
|
428
508
|
{
|
429
509
|
}
|
430
510
|
|
511
|
+
bool is_convertible(VALUE value)
|
512
|
+
{
|
513
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
514
|
+
}
|
515
|
+
|
431
516
|
unsigned int& convert(VALUE value)
|
432
517
|
{
|
433
518
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -450,6 +535,11 @@ namespace Rice::detail
|
|
450
535
|
class From_Ruby<unsigned int*>
|
451
536
|
{
|
452
537
|
public:
|
538
|
+
bool is_convertible(VALUE value)
|
539
|
+
{
|
540
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
541
|
+
}
|
542
|
+
|
453
543
|
unsigned int* convert(VALUE value)
|
454
544
|
{
|
455
545
|
if (value == Qnil)
|
@@ -478,9 +568,14 @@ namespace Rice::detail
|
|
478
568
|
{
|
479
569
|
}
|
480
570
|
|
571
|
+
bool is_convertible(VALUE value)
|
572
|
+
{
|
573
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
574
|
+
}
|
575
|
+
|
481
576
|
unsigned long convert(VALUE value)
|
482
577
|
{
|
483
|
-
if (this->arg_ && this->arg_->
|
578
|
+
if (this->arg_ && this->arg_->isValue())
|
484
579
|
{
|
485
580
|
return (unsigned long)value;
|
486
581
|
}
|
@@ -508,6 +603,11 @@ namespace Rice::detail
|
|
508
603
|
{
|
509
604
|
}
|
510
605
|
|
606
|
+
bool is_convertible(VALUE value)
|
607
|
+
{
|
608
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
609
|
+
}
|
610
|
+
|
511
611
|
unsigned long& convert(VALUE value)
|
512
612
|
{
|
513
613
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -530,6 +630,11 @@ namespace Rice::detail
|
|
530
630
|
class From_Ruby<unsigned long*>
|
531
631
|
{
|
532
632
|
public:
|
633
|
+
bool is_convertible(VALUE value)
|
634
|
+
{
|
635
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
636
|
+
}
|
637
|
+
|
533
638
|
unsigned long* convert(VALUE value)
|
534
639
|
{
|
535
640
|
if (value == Qnil)
|
@@ -558,9 +663,14 @@ namespace Rice::detail
|
|
558
663
|
{
|
559
664
|
}
|
560
665
|
|
666
|
+
bool is_convertible(VALUE value)
|
667
|
+
{
|
668
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
669
|
+
}
|
670
|
+
|
561
671
|
unsigned long long convert(VALUE value)
|
562
672
|
{
|
563
|
-
if (this->arg_ && this->arg_->
|
673
|
+
if (this->arg_ && this->arg_->isValue())
|
564
674
|
{
|
565
675
|
return value;
|
566
676
|
}
|
@@ -588,6 +698,11 @@ namespace Rice::detail
|
|
588
698
|
{
|
589
699
|
}
|
590
700
|
|
701
|
+
bool is_convertible(VALUE value)
|
702
|
+
{
|
703
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
704
|
+
}
|
705
|
+
|
591
706
|
unsigned long long& convert(VALUE value)
|
592
707
|
{
|
593
708
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -610,6 +725,11 @@ namespace Rice::detail
|
|
610
725
|
class From_Ruby<unsigned long long*>
|
611
726
|
{
|
612
727
|
public:
|
728
|
+
bool is_convertible(VALUE value)
|
729
|
+
{
|
730
|
+
return rb_type(value) == RUBY_T_FIXNUM;
|
731
|
+
}
|
732
|
+
|
613
733
|
unsigned long long* convert(VALUE value)
|
614
734
|
{
|
615
735
|
if (value == Qnil)
|
@@ -638,6 +758,14 @@ namespace Rice::detail
|
|
638
758
|
{
|
639
759
|
}
|
640
760
|
|
761
|
+
bool is_convertible(VALUE value)
|
762
|
+
{
|
763
|
+
ruby_value_type ruby_type = (ruby_value_type)rb_type(value);
|
764
|
+
return ruby_type == RUBY_T_TRUE ||
|
765
|
+
ruby_type == RUBY_T_FALSE ||
|
766
|
+
ruby_type == RUBY_T_NIL;
|
767
|
+
}
|
768
|
+
|
641
769
|
bool convert(VALUE value)
|
642
770
|
{
|
643
771
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -664,6 +792,14 @@ namespace Rice::detail
|
|
664
792
|
{
|
665
793
|
}
|
666
794
|
|
795
|
+
bool is_convertible(VALUE value)
|
796
|
+
{
|
797
|
+
ruby_value_type ruby_type = (ruby_value_type)rb_type(value);
|
798
|
+
return ruby_type == RUBY_T_TRUE ||
|
799
|
+
ruby_type == RUBY_T_FALSE ||
|
800
|
+
ruby_type == RUBY_T_NIL;
|
801
|
+
}
|
802
|
+
|
667
803
|
bool& convert(VALUE value)
|
668
804
|
{
|
669
805
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -686,6 +822,14 @@ namespace Rice::detail
|
|
686
822
|
class From_Ruby<bool*>
|
687
823
|
{
|
688
824
|
public:
|
825
|
+
bool is_convertible(VALUE value)
|
826
|
+
{
|
827
|
+
ruby_value_type ruby_type = (ruby_value_type)rb_type(value);
|
828
|
+
return ruby_type == RUBY_T_TRUE ||
|
829
|
+
ruby_type == RUBY_T_FALSE ||
|
830
|
+
ruby_type == RUBY_T_NIL;
|
831
|
+
}
|
832
|
+
|
689
833
|
bool* convert(VALUE value)
|
690
834
|
{
|
691
835
|
if (value == Qnil)
|
@@ -744,6 +888,11 @@ namespace Rice::detail
|
|
744
888
|
{
|
745
889
|
}
|
746
890
|
|
891
|
+
bool is_convertible(VALUE value)
|
892
|
+
{
|
893
|
+
return rb_type(value) == RUBY_T_STRING;
|
894
|
+
}
|
895
|
+
|
747
896
|
char convert(VALUE value)
|
748
897
|
{
|
749
898
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -770,6 +919,11 @@ namespace Rice::detail
|
|
770
919
|
{
|
771
920
|
}
|
772
921
|
|
922
|
+
bool is_convertible(VALUE value)
|
923
|
+
{
|
924
|
+
return rb_type(value) == RUBY_T_STRING;
|
925
|
+
}
|
926
|
+
|
773
927
|
char& convert(VALUE value)
|
774
928
|
{
|
775
929
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -792,6 +946,11 @@ namespace Rice::detail
|
|
792
946
|
class From_Ruby<char*>
|
793
947
|
{
|
794
948
|
public:
|
949
|
+
bool is_convertible(VALUE value)
|
950
|
+
{
|
951
|
+
return rb_type(value) == RUBY_T_STRING;
|
952
|
+
}
|
953
|
+
|
795
954
|
char* convert(VALUE value)
|
796
955
|
{
|
797
956
|
if (value == Qnil)
|
@@ -811,6 +970,11 @@ namespace Rice::detail
|
|
811
970
|
class From_Ruby<char const*>
|
812
971
|
{
|
813
972
|
public:
|
973
|
+
bool is_convertible(VALUE value)
|
974
|
+
{
|
975
|
+
return rb_type(value) == RUBY_T_STRING;
|
976
|
+
}
|
977
|
+
|
814
978
|
char const* convert(VALUE value)
|
815
979
|
{
|
816
980
|
if (value == Qnil)
|
@@ -836,6 +1000,11 @@ namespace Rice::detail
|
|
836
1000
|
{
|
837
1001
|
}
|
838
1002
|
|
1003
|
+
bool is_convertible(VALUE value)
|
1004
|
+
{
|
1005
|
+
return rb_type(value) == RUBY_T_STRING;
|
1006
|
+
}
|
1007
|
+
|
839
1008
|
unsigned char convert(VALUE value)
|
840
1009
|
{
|
841
1010
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -863,6 +1032,11 @@ namespace Rice::detail
|
|
863
1032
|
{
|
864
1033
|
}
|
865
1034
|
|
1035
|
+
bool is_convertible(VALUE value)
|
1036
|
+
{
|
1037
|
+
return rb_type(value) == RUBY_T_STRING;
|
1038
|
+
}
|
1039
|
+
|
866
1040
|
signed char convert(VALUE value)
|
867
1041
|
{
|
868
1042
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -890,6 +1064,11 @@ namespace Rice::detail
|
|
890
1064
|
{
|
891
1065
|
}
|
892
1066
|
|
1067
|
+
bool is_convertible(VALUE value)
|
1068
|
+
{
|
1069
|
+
return rb_type(value) == RUBY_T_FLOAT;
|
1070
|
+
}
|
1071
|
+
|
893
1072
|
double convert(VALUE value)
|
894
1073
|
{
|
895
1074
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -916,6 +1095,11 @@ namespace Rice::detail
|
|
916
1095
|
{
|
917
1096
|
}
|
918
1097
|
|
1098
|
+
bool is_convertible(VALUE value)
|
1099
|
+
{
|
1100
|
+
return rb_type(value) == RUBY_T_FLOAT;
|
1101
|
+
}
|
1102
|
+
|
919
1103
|
double& convert(VALUE value)
|
920
1104
|
{
|
921
1105
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -938,6 +1122,11 @@ namespace Rice::detail
|
|
938
1122
|
class From_Ruby<double*>
|
939
1123
|
{
|
940
1124
|
public:
|
1125
|
+
bool is_convertible(VALUE value)
|
1126
|
+
{
|
1127
|
+
return rb_type(value) == RUBY_T_FLOAT;
|
1128
|
+
}
|
1129
|
+
|
941
1130
|
double* convert(VALUE value)
|
942
1131
|
{
|
943
1132
|
if (value == Qnil)
|
@@ -966,6 +1155,11 @@ namespace Rice::detail
|
|
966
1155
|
{
|
967
1156
|
}
|
968
1157
|
|
1158
|
+
bool is_convertible(VALUE value)
|
1159
|
+
{
|
1160
|
+
return rb_type(value) == RUBY_T_FLOAT;
|
1161
|
+
}
|
1162
|
+
|
969
1163
|
float convert(VALUE value)
|
970
1164
|
{
|
971
1165
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -992,6 +1186,11 @@ namespace Rice::detail
|
|
992
1186
|
{
|
993
1187
|
}
|
994
1188
|
|
1189
|
+
bool is_convertible(VALUE value)
|
1190
|
+
{
|
1191
|
+
return rb_type(value) == RUBY_T_FLOAT;
|
1192
|
+
}
|
1193
|
+
|
995
1194
|
float& convert(VALUE value)
|
996
1195
|
{
|
997
1196
|
if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
|
@@ -1014,6 +1213,11 @@ namespace Rice::detail
|
|
1014
1213
|
class From_Ruby<float*>
|
1015
1214
|
{
|
1016
1215
|
public:
|
1216
|
+
bool is_convertible(VALUE value)
|
1217
|
+
{
|
1218
|
+
return rb_type(value) == RUBY_T_FLOAT;
|
1219
|
+
}
|
1220
|
+
|
1017
1221
|
float* convert(VALUE value)
|
1018
1222
|
{
|
1019
1223
|
if (value == Qnil)
|
data/rice/detail/to_ruby.ipp
CHANGED
@@ -189,7 +189,7 @@ namespace Rice
|
|
189
189
|
|
190
190
|
VALUE convert(unsigned long const& x)
|
191
191
|
{
|
192
|
-
if (this->returnInfo_ && this->returnInfo_->
|
192
|
+
if (this->returnInfo_ && this->returnInfo_->isValue())
|
193
193
|
{
|
194
194
|
return x;
|
195
195
|
}
|
@@ -215,7 +215,7 @@ namespace Rice
|
|
215
215
|
|
216
216
|
VALUE convert(unsigned long const& x)
|
217
217
|
{
|
218
|
-
if (this->returnInfo_ && this->returnInfo_->
|
218
|
+
if (this->returnInfo_ && this->returnInfo_->isValue())
|
219
219
|
{
|
220
220
|
return x;
|
221
221
|
}
|
@@ -241,7 +241,7 @@ namespace Rice
|
|
241
241
|
|
242
242
|
VALUE convert(unsigned long long const& x)
|
243
243
|
{
|
244
|
-
if (this->returnInfo_ && this->returnInfo_->
|
244
|
+
if (this->returnInfo_ && this->returnInfo_->isValue())
|
245
245
|
{
|
246
246
|
return x;
|
247
247
|
}
|
@@ -267,7 +267,7 @@ namespace Rice
|
|
267
267
|
|
268
268
|
VALUE convert(unsigned long long const& x)
|
269
269
|
{
|
270
|
-
if (this->returnInfo_ && this->returnInfo_->
|
270
|
+
if (this->returnInfo_ && this->returnInfo_->isValue())
|
271
271
|
{
|
272
272
|
return x;
|
273
273
|
}
|
@@ -407,7 +407,41 @@ namespace Rice
|
|
407
407
|
public:
|
408
408
|
VALUE convert(char const* x)
|
409
409
|
{
|
410
|
-
|
410
|
+
if (strlen(x) > 0 && x[0] == ':')
|
411
|
+
{
|
412
|
+
size_t symbolLength = strlen(x) - 1;
|
413
|
+
char* symbol = new char[symbolLength];
|
414
|
+
strncpy(symbol, x + 1, symbolLength);
|
415
|
+
ID id = protect(rb_intern2, symbol, (long)symbolLength);
|
416
|
+
delete[] symbol;
|
417
|
+
return protect(rb_id2sym, id);
|
418
|
+
}
|
419
|
+
else
|
420
|
+
{
|
421
|
+
return protect(rb_str_new2, x);
|
422
|
+
}
|
423
|
+
}
|
424
|
+
};
|
425
|
+
|
426
|
+
template<int N>
|
427
|
+
class To_Ruby<char[N]>
|
428
|
+
{
|
429
|
+
public:
|
430
|
+
VALUE convert(char const x[])
|
431
|
+
{
|
432
|
+
if (N > 0 && x[0] == ':')
|
433
|
+
{
|
434
|
+
// N count includes a NULL character at the end of the string
|
435
|
+
constexpr size_t symbolLength = N - 1;
|
436
|
+
char symbol[symbolLength];
|
437
|
+
strncpy(symbol, x + 1, symbolLength);
|
438
|
+
ID id = protect(rb_intern, symbol);
|
439
|
+
return protect(rb_id2sym, id);
|
440
|
+
}
|
441
|
+
else
|
442
|
+
{
|
443
|
+
return protect(rb_str_new2, x);
|
444
|
+
}
|
411
445
|
}
|
412
446
|
};
|
413
447
|
}
|
data/rice/forward_declares.ipp
CHANGED
@@ -78,5 +78,11 @@ namespace Rice
|
|
78
78
|
{
|
79
79
|
return CLASS_OF(value());
|
80
80
|
}
|
81
|
+
|
82
|
+
inline Object Module::module_eval(String const& s)
|
83
|
+
{
|
84
|
+
const VALUE argv[] = { s.value() };
|
85
|
+
return detail::protect(rb_mod_module_eval, 1, &argv[0], this->value());
|
86
|
+
}
|
81
87
|
}
|
82
88
|
#endif // Rice__Forward_Declares__ipp_
|
data/rice/global_function.hpp
CHANGED
@@ -5,10 +5,6 @@
|
|
5
5
|
|
6
6
|
namespace Rice
|
7
7
|
{
|
8
|
-
template<typename Function_T>
|
9
|
-
[[deprecated("Please call define_global_function with Arg parameters")]]
|
10
|
-
void define_global_function(char const * name, Function_T&& func, MethodInfo* arguments);
|
11
|
-
|
12
8
|
//! Define an global function
|
13
9
|
/*! The method's implementation can be any function or static member
|
14
10
|
* function. A wrapper will be generated which will convert the arguments
|
data/rice/global_function.ipp
CHANGED
@@ -1,11 +1,5 @@
|
|
1
1
|
#include "cpp_api/Module.hpp"
|
2
2
|
|
3
|
-
template<typename Function_T>
|
4
|
-
void Rice::define_global_function(char const * name, Function_T&& func, MethodInfo* methodInfo)
|
5
|
-
{
|
6
|
-
Module(rb_mKernel).define_module_function(name, std::forward<Function_T>(func), methodInfo);
|
7
|
-
}
|
8
|
-
|
9
3
|
template<typename Function_T, typename...Arg_Ts>
|
10
4
|
void Rice::define_global_function(char const * name, Function_T&& func, Arg_Ts const& ...args)
|
11
5
|
{
|
data/rice/rice.hpp
CHANGED
@@ -1,56 +1,61 @@
|
|
1
1
|
#ifndef Rice__hpp_
|
2
2
|
#define Rice__hpp_
|
3
3
|
|
4
|
+
// Traits
|
4
5
|
#include "detail/ruby.hpp"
|
5
|
-
#include "
|
6
|
-
#include "
|
6
|
+
#include "traits/rice_traits.hpp"
|
7
|
+
#include "traits/function_traits.hpp"
|
8
|
+
#include "traits/method_traits.hpp"
|
9
|
+
#include "traits/attribute_traits.hpp"
|
10
|
+
|
11
|
+
// Code for C++ to call Ruby
|
12
|
+
#include "Exception_defn.hpp"
|
13
|
+
#include "detail/Jump_Tag.hpp"
|
14
|
+
#include "detail/RubyFunction.hpp"
|
15
|
+
|
16
|
+
// Code for Ruby to call C++
|
17
|
+
#include "detail/ExceptionHandler.hpp"
|
7
18
|
#include "detail/Type.hpp"
|
8
19
|
#include "detail/TypeRegistry.hpp"
|
20
|
+
#include "detail/InstanceRegistry.hpp"
|
21
|
+
#include "detail/HandlerRegistry.hpp"
|
22
|
+
#include "detail/NativeRegistry.hpp"
|
23
|
+
#include "detail/Registries.hpp"
|
24
|
+
#include "detail/cpp_protect.hpp"
|
9
25
|
#include "detail/Wrapper.hpp"
|
10
|
-
#include "detail/default_allocation_func.hpp"
|
11
|
-
#include "detail/Jump_Tag.hpp"
|
12
|
-
#include "Exception_defn.hpp"
|
13
|
-
#include "detail/RubyFunction.hpp"
|
14
26
|
#include "Return.hpp"
|
15
27
|
#include "Arg.hpp"
|
28
|
+
#include "detail/MethodInfo.hpp"
|
16
29
|
#include "detail/from_ruby.hpp"
|
17
30
|
#include "detail/to_ruby.hpp"
|
18
|
-
#include "
|
19
|
-
#include "detail/Exception_Handler.hpp"
|
20
|
-
#include "detail/Iterator.hpp"
|
31
|
+
#include "Identifier.hpp"
|
21
32
|
#include "Exception.ipp"
|
22
|
-
#include "detail/method_data.hpp"
|
23
|
-
#include "ruby_try_catch.hpp"
|
24
33
|
#include "detail/NativeAttribute.hpp"
|
25
34
|
#include "detail/NativeFunction.hpp"
|
35
|
+
#include "detail/NativeIterator.hpp"
|
36
|
+
#include "HandlerRegistration.hpp"
|
26
37
|
|
27
|
-
|
28
|
-
|
29
|
-
#include "Identifier.hpp"
|
30
|
-
|
38
|
+
// C++ classes for using the Ruby API
|
31
39
|
#include "cpp_api/Object.hpp"
|
32
40
|
#include "cpp_api/Builtin_Object.hpp"
|
33
41
|
#include "cpp_api/String.hpp"
|
34
42
|
#include "cpp_api/Array.hpp"
|
35
43
|
#include "cpp_api/Hash.hpp"
|
36
44
|
#include "cpp_api/Symbol.hpp"
|
37
|
-
|
38
|
-
#include "Address_Registration_Guard.hpp"
|
39
45
|
#include "cpp_api/Module.hpp"
|
40
|
-
#include "global_function.hpp"
|
41
|
-
|
42
46
|
#include "cpp_api/Class.hpp"
|
43
47
|
#include "cpp_api/Struct.hpp"
|
48
|
+
#include "Address_Registration_Guard.hpp"
|
49
|
+
#include "global_function.hpp"
|
44
50
|
|
51
|
+
// Code involed in creating custom DataTypes (ie, Ruby classes that wrap C++ classes)
|
52
|
+
#include "ruby_mark.hpp"
|
53
|
+
#include "detail/default_allocation_func.hpp"
|
45
54
|
#include "Director.hpp"
|
46
55
|
#include "Data_Type.hpp"
|
56
|
+
#include "detail/default_allocation_func.ipp"
|
47
57
|
#include "Constructor.hpp"
|
48
58
|
#include "Data_Object.hpp"
|
49
|
-
#include "detail/Iterator.ipp"
|
50
|
-
|
51
|
-
// Dependent on Data_Object due to the way method metadata is stored in the Ruby class
|
52
|
-
#include "detail/default_allocation_func.ipp"
|
53
|
-
|
54
59
|
#include "Enum.hpp"
|
55
60
|
|
56
61
|
// Dependent on Module, Class, Array and String
|
data/rice/stl.hpp
CHANGED
@@ -4,8 +4,13 @@
|
|
4
4
|
#include "stl/string.hpp"
|
5
5
|
#include "stl/complex.hpp"
|
6
6
|
#include "stl/optional.hpp"
|
7
|
-
#include "stl/
|
7
|
+
#include "stl/reference_wrapper.hpp"
|
8
8
|
#include "stl/smart_ptr.hpp"
|
9
|
+
#include "stl/monostate.hpp"
|
10
|
+
#include "stl/variant.hpp"
|
11
|
+
#include "stl/pair.hpp"
|
12
|
+
#include "stl/map.hpp"
|
13
|
+
#include "stl/unordered_map.hpp"
|
9
14
|
#include "stl/vector.hpp"
|
10
15
|
|
11
16
|
#endif // Rice__stl__hpp_
|
data/sample/callbacks/extconf.rb
CHANGED