@@ -6,6 +6,7 @@ package main
66VALUE rb_dummy_sum(VALUE self, VALUE a, VALUE b);
77VALUE rb_dummy_with_block(VALUE self, VALUE arg);
88VALUE rb_dummy_hello(VALUE self, VALUE name);
9+ VALUE rb_dummy_unit_kilobyte(VALUE self);
910*/
1011import "C"
1112
@@ -40,6 +41,17 @@ func rb_dummy_hello(_ C.VALUE, name C.VALUE) C.VALUE {
4041 return C .VALUE (ruby .String2Value (result ))
4142}
4243
44+ //export rb_dummy_unit_kilobyte
45+ func rb_dummy_unit_kilobyte (self C.VALUE ) C.VALUE {
46+ sourceID := ruby .RbIntern ("@source" )
47+ sourceValue := ruby .RbIvarGet (ruby .VALUE (self ), sourceID )
48+
49+ sourceLong := ruby .RbNum2long (sourceValue )
50+ result := sourceLong * 1024
51+
52+ return C .VALUE (ruby .RbLong2numInline (result ))
53+ }
54+
4355var rb_mDummy ruby.VALUE
4456
4557//export Init_dummy
@@ -57,6 +69,10 @@ func Init_dummy() {
5769
5870 // Create OuterClass class
5971 ruby .RbDefineClass ("OuterClass" , ruby .VALUE (C .rb_cObject ))
72+
73+ // Dummy::Unit
74+ rb_cUnit := ruby .RbDefineClassUnder (rb_mDummy , "Unit" , ruby .VALUE (C .rb_cObject ))
75+ ruby .RbDefineMethod (rb_cUnit , "kilobyte" , C .rb_dummy_unit_kilobyte , 0 )
6076}
6177
6278func main () {
0 commit comments