extpp 0.0.9 → 0.1.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +2 -2
  4. data/Rakefile +1 -28
  5. data/doc/text/news.md +6 -0
  6. data/include/ruby/class.hpp +191 -14
  7. data/{ext/extpp → include/ruby}/function.hpp +20 -7
  8. data/include/ruby/object.hpp +45 -6
  9. data/include/ruby/protect.hpp +9 -2
  10. data/include/ruby.hpp +0 -10
  11. data/lib/extpp/setup.rb +0 -4
  12. data/lib/extpp/version.rb +1 -1
  13. data/lib/extpp.rb +0 -12
  14. metadata +6 -73
  15. data/ext/extpp/class.cpp +0 -277
  16. data/ext/extpp/extconf.rb +0 -110
  17. data/ext/extpp/function.cpp +0 -28
  18. data/ext/extpp/object.cpp +0 -48
  19. data/ext/extpp/protect.cpp +0 -12
  20. data/lib/extpp/platform.rb +0 -8
  21. data/test/fixtures/cast/Makefile +0 -269
  22. data/test/fixtures/cast/cast.cpp +0 -39
  23. data/test/fixtures/cast/cast.o +0 -0
  24. data/test/fixtures/cast/cast.so +0 -0
  25. data/test/fixtures/cast/extconf.rb +0 -4
  26. data/test/fixtures/cast/mkmf.log +0 -144
  27. data/test/fixtures/class/Makefile +0 -269
  28. data/test/fixtures/class/class.cpp +0 -46
  29. data/test/fixtures/class/class.o +0 -0
  30. data/test/fixtures/class/class.so +0 -0
  31. data/test/fixtures/class/extconf.rb +0 -4
  32. data/test/fixtures/class/mkmf.log +0 -144
  33. data/test/fixtures/object/Makefile +0 -269
  34. data/test/fixtures/object/extconf.rb +0 -4
  35. data/test/fixtures/object/mkmf.log +0 -144
  36. data/test/fixtures/object/object.cpp +0 -102
  37. data/test/fixtures/object/object.o +0 -0
  38. data/test/fixtures/object/object.so +0 -0
  39. data/test/fixtures/protect/Makefile +0 -269
  40. data/test/fixtures/protect/extconf.rb +0 -4
  41. data/test/fixtures/protect/mkmf.log +0 -144
  42. data/test/fixtures/protect/protect.cpp +0 -70
  43. data/test/fixtures/protect/protect.o +0 -0
  44. data/test/fixtures/protect/protect.so +0 -0
  45. data/test/helper.rb +0 -11
  46. data/test/run-test.rb +0 -31
  47. data/test/test-cast.rb +0 -46
  48. data/test/test-class.rb +0 -47
  49. data/test/test-object.rb +0 -68
  50. data/test/test-protect.rb +0 -54
@@ -1,269 +0,0 @@
1
-
2
- SHELL = /bin/sh
3
-
4
- # V=0 quiet, V=1 verbose. other values don't work.
5
- V = 0
6
- Q1 = $(V:1=)
7
- Q = $(Q1:0=@)
8
- ECHO1 = $(V:1=@ :)
9
- ECHO = $(ECHO1:0=@ echo)
10
- NULLCMD = :
11
-
12
- #### Start of system configuration section. ####
13
-
14
- srcdir = .
15
- topdir = /tmp/local/include/ruby-2.7.0
16
- hdrdir = $(topdir)
17
- arch_hdrdir = /tmp/local/include/ruby-2.7.0/x86_64-linux
18
- PATH_SEPARATOR = :
19
- VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
20
- prefix = $(DESTDIR)/tmp/local
21
- rubysitearchprefix = $(rubylibprefix)/$(sitearch)
22
- rubyarchprefix = $(rubylibprefix)/$(arch)
23
- rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
24
- exec_prefix = $(prefix)
25
- vendorarchhdrdir = $(vendorhdrdir)/$(sitearch)
26
- sitearchhdrdir = $(sitehdrdir)/$(sitearch)
27
- rubyarchhdrdir = $(rubyhdrdir)/$(arch)
28
- vendorhdrdir = $(rubyhdrdir)/vendor_ruby
29
- sitehdrdir = $(rubyhdrdir)/site_ruby
30
- rubyhdrdir = $(includedir)/$(RUBY_VERSION_NAME)
31
- vendorarchdir = $(vendorlibdir)/$(sitearch)
32
- vendorlibdir = $(vendordir)/$(ruby_version)
33
- vendordir = $(rubylibprefix)/vendor_ruby
34
- sitearchdir = $(sitelibdir)/$(sitearch)
35
- sitelibdir = $(sitedir)/$(ruby_version)
36
- sitedir = $(rubylibprefix)/site_ruby
37
- rubyarchdir = $(rubylibdir)/$(arch)
38
- rubylibdir = $(rubylibprefix)/$(ruby_version)
39
- sitearchincludedir = $(includedir)/$(sitearch)
40
- archincludedir = $(includedir)/$(arch)
41
- sitearchlibdir = $(libdir)/$(sitearch)
42
- archlibdir = $(libdir)/$(arch)
43
- ridir = $(datarootdir)/$(RI_BASE_NAME)
44
- mandir = $(datarootdir)/man
45
- localedir = $(datarootdir)/locale
46
- libdir = $(exec_prefix)/lib
47
- psdir = $(docdir)
48
- pdfdir = $(docdir)
49
- dvidir = $(docdir)
50
- htmldir = $(docdir)
51
- infodir = $(datarootdir)/info
52
- docdir = $(datarootdir)/doc/$(PACKAGE)
53
- oldincludedir = $(DESTDIR)/usr/include
54
- includedir = $(prefix)/include
55
- runstatedir = $(localstatedir)/run
56
- localstatedir = $(prefix)/var
57
- sharedstatedir = $(prefix)/com
58
- sysconfdir = $(prefix)/etc
59
- datadir = $(datarootdir)
60
- datarootdir = $(prefix)/share
61
- libexecdir = $(exec_prefix)/libexec
62
- sbindir = $(exec_prefix)/sbin
63
- bindir = $(exec_prefix)/bin
64
- archdir = $(rubyarchdir)
65
-
66
-
67
- CC_WRAPPER =
68
- CC = gcc
69
- CXX = g++
70
- LIBRUBY = $(LIBRUBY_SO)
71
- LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
72
- LIBRUBYARG_SHARED = -Wl,-rpath,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)
73
- LIBRUBYARG_STATIC = -Wl,-rpath,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)-static $(MAINLIBS)
74
- empty =
75
- OUTFLAG = -o $(empty)
76
- COUTFLAG = -o $(empty)
77
- CSRCFLAG = $(empty)
78
-
79
- RUBY_EXTCONF_H =
80
- cflags = $(optflags) $(debugflags) $(warnflags)
81
- cxxflags = $(optflags) $(debugflags) $(warnflags)
82
- optflags = -O3 -march=native
83
- debugflags = -ggdb3
84
- warnflags = -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable
85
- cppflags =
86
- CCDLFLAGS = -fPIC
87
- CFLAGS = $(CCDLFLAGS) $(cflags) -fPIC $(ARCH_FLAG)
88
- INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir) -I/home/kou/work/ruby/extpp/include
89
- DEFS =
90
- CPPFLAGS = $(DEFS) $(cppflags)
91
- CXXFLAGS = $(CCDLFLAGS) -O3 -march\=native -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough\=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute\=format -Wsuggest-attribute\=noreturn -Wunused-variable $(ARCH_FLAG)
92
- ldflags = -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic
93
- dldflags = -Wl,--compress-debug-sections=zlib
94
- ARCH_FLAG =
95
- DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
96
- LDSHARED = $(CC) -shared
97
- LDSHAREDXX = $(CXX) -shared
98
- AR = ar
99
- EXEEXT =
100
-
101
- RUBY_INSTALL_NAME = $(RUBY_BASE_NAME)
102
- RUBY_SO_NAME = ruby
103
- RUBYW_INSTALL_NAME =
104
- RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
105
- RUBYW_BASE_NAME = rubyw
106
- RUBY_BASE_NAME = ruby
107
-
108
- arch = x86_64-linux
109
- sitearch = $(arch)
110
- ruby_version = 2.7.0
111
- ruby = $(bindir)/$(RUBY_BASE_NAME)
112
- RUBY = $(ruby)
113
- ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/missing.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/st.h $(hdrdir)/ruby/subst.h $(arch_hdrdir)/ruby/config.h
114
-
115
- RM = rm -f
116
- RM_RF = $(RUBY) -run -e rm -- -rf
117
- RMDIRS = rmdir --ignore-fail-on-non-empty -p
118
- MAKEDIRS = /bin/mkdir -p
119
- INSTALL = /usr/bin/install -c
120
- INSTALL_PROG = $(INSTALL) -m 0755
121
- INSTALL_DATA = $(INSTALL) -m 644
122
- COPY = cp
123
- TOUCH = exit >
124
-
125
- #### End of system configuration section. ####
126
-
127
- preload =
128
- libpath = . $(libdir)
129
- LIBPATH = -L. -L$(libdir) -Wl,-rpath,$(libdir)
130
- DEFFILE =
131
-
132
- CLEANFILES = mkmf.log
133
- DISTCLEANFILES =
134
- DISTCLEANDIRS =
135
-
136
- extout =
137
- extout_prefix =
138
- target_prefix =
139
- LOCAL_LIBS =
140
- LIBS = $(LIBRUBYARG_SHARED) -lm -lc /home/kou/work/ruby/extpp/ext/extpp/libruby-extpp.so
141
- ORIG_SRCS = object.cpp
142
- SRCS = $(ORIG_SRCS)
143
- OBJS = object.o
144
- HDRS =
145
- LOCAL_HDRS =
146
- TARGET = object
147
- TARGET_NAME = object
148
- TARGET_ENTRY = Init_$(TARGET_NAME)
149
- DLLIB = $(TARGET).so
150
- EXTSTATIC =
151
- STATIC_LIB =
152
-
153
- TIMESTAMP_DIR = .
154
- BINDIR = $(bindir)
155
- RUBYCOMMONDIR = $(sitedir)$(target_prefix)
156
- RUBYLIBDIR = $(sitelibdir)$(target_prefix)
157
- RUBYARCHDIR = $(sitearchdir)$(target_prefix)
158
- HDRDIR = $(rubyhdrdir)/ruby$(target_prefix)
159
- ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix)
160
- TARGET_SO_DIR =
161
- TARGET_SO = $(TARGET_SO_DIR)$(DLLIB)
162
- CLEANLIBS = $(TARGET_SO)
163
- CLEANOBJS = *.o *.bak
164
-
165
- all: $(DLLIB)
166
- static: $(STATIC_LIB)
167
- .PHONY: all install static install-so install-rb
168
- .PHONY: clean clean-so clean-static clean-rb
169
-
170
- clean-static::
171
- clean-rb-default::
172
- clean-rb::
173
- clean-so::
174
- clean: clean-so clean-static clean-rb-default clean-rb
175
- -$(Q)$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time
176
-
177
- distclean-rb-default::
178
- distclean-rb::
179
- distclean-so::
180
- distclean-static::
181
- distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb
182
- -$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
183
- -$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
184
- -$(Q)$(RMDIRS) $(DISTCLEANDIRS) 2> /dev/null || true
185
-
186
- realclean: distclean
187
- install: install-so install-rb
188
-
189
- install-so: $(DLLIB) $(TIMESTAMP_DIR)/.sitearchdir.time
190
- $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
191
- clean-static::
192
- -$(Q)$(RM) $(STATIC_LIB)
193
- install-rb: pre-install-rb do-install-rb install-rb-default
194
- install-rb-default: pre-install-rb-default do-install-rb-default
195
- pre-install-rb: Makefile
196
- pre-install-rb-default: Makefile
197
- do-install-rb:
198
- do-install-rb-default:
199
- pre-install-rb-default:
200
- @$(NULLCMD)
201
- $(TIMESTAMP_DIR)/.sitearchdir.time:
202
- $(Q) $(MAKEDIRS) $(@D) $(RUBYARCHDIR)
203
- $(Q) $(TOUCH) $@
204
-
205
- site-install: site-install-so site-install-rb
206
- site-install-so: install-so
207
- site-install-rb: install-rb
208
-
209
- .SUFFIXES: .c .m .cc .mm .cxx .cpp .o .S
210
-
211
- .cc.o:
212
- $(ECHO) compiling $(<)
213
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
214
-
215
- .cc.S:
216
- $(ECHO) translating $(<)
217
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
218
-
219
- .mm.o:
220
- $(ECHO) compiling $(<)
221
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
222
-
223
- .mm.S:
224
- $(ECHO) translating $(<)
225
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
226
-
227
- .cxx.o:
228
- $(ECHO) compiling $(<)
229
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
230
-
231
- .cxx.S:
232
- $(ECHO) translating $(<)
233
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
234
-
235
- .cpp.o:
236
- $(ECHO) compiling $(<)
237
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
238
-
239
- .cpp.S:
240
- $(ECHO) translating $(<)
241
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
242
-
243
- .c.o:
244
- $(ECHO) compiling $(<)
245
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
246
-
247
- .c.S:
248
- $(ECHO) translating $(<)
249
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
250
-
251
- .m.o:
252
- $(ECHO) compiling $(<)
253
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
254
-
255
- .m.S:
256
- $(ECHO) translating $(<)
257
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
258
-
259
- $(TARGET_SO): $(OBJS) Makefile
260
- $(ECHO) linking shared-object $(DLLIB)
261
- -$(Q)$(RM) $(@)
262
- $(Q) $(LDSHAREDXX) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
263
-
264
-
265
-
266
- $(OBJS): $(HDRS) $(ruby_headers)
267
-
268
- extpp_headers = /home/kou/work/ruby/extpp/include/ruby/object.hpp /home/kou/work/ruby/extpp/include/ruby/class.hpp /home/kou/work/ruby/extpp/include/ruby/protect.hpp /home/kou/work/ruby/extpp/include/ruby/cast.hpp /home/kou/work/ruby/extpp/include/ruby/type.hpp /home/kou/work/ruby/extpp/include/ruby.hpp
269
- $(OBJS): $(extpp_headers)
@@ -1,4 +0,0 @@
1
- require "mkmf"
2
- require "extpp"
3
-
4
- create_makefile("object")
@@ -1,144 +0,0 @@
1
- check_debug_build: checking --enable-debug-build option... -------------------- no
2
-
3
- --------------------
4
-
5
- check_cxx: checking C++ compiler... -------------------- g++
6
-
7
- --------------------
8
-
9
- check_version: checking g++ version... -------------------- 8.3
10
-
11
- --------------------
12
-
13
- "g++ -Werror -Wall -c conftest.cpp"
14
- checked program was:
15
- /* begin */
16
- 1: int main(void) {return 0;}/* end */
17
-
18
- "g++ -Werror -Wextra -c conftest.cpp"
19
- checked program was:
20
- /* begin */
21
- 1: int main(void) {return 0;}/* end */
22
-
23
- "g++ -Werror -Wdeprecated-declarations -c conftest.cpp"
24
- checked program was:
25
- /* begin */
26
- 1: int main(void) {return 0;}/* end */
27
-
28
- "g++ -Werror -Wduplicated-cond -c conftest.cpp"
29
- checked program was:
30
- /* begin */
31
- 1: int main(void) {return 0;}/* end */
32
-
33
- "g++ -Werror -Wimplicit-function-declaration -c conftest.cpp"
34
- cc1plus: error: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ [-Werror]
35
- cc1plus: all warnings being treated as errors
36
- checked program was:
37
- /* begin */
38
- 1: int main(void) {return 0;}/* end */
39
-
40
- "g++ -Werror -Wimplicit-int -c conftest.cpp"
41
- cc1plus: error: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ [-Werror]
42
- cc1plus: all warnings being treated as errors
43
- checked program was:
44
- /* begin */
45
- 1: int main(void) {return 0;}/* end */
46
-
47
- "g++ -Werror -Wmisleading-indentation -c conftest.cpp"
48
- checked program was:
49
- /* begin */
50
- 1: int main(void) {return 0;}/* end */
51
-
52
- "g++ -Werror -Wpointer-arith -c conftest.cpp"
53
- checked program was:
54
- /* begin */
55
- 1: int main(void) {return 0;}/* end */
56
-
57
- "g++ -Werror -Wwrite-strings -c conftest.cpp"
58
- checked program was:
59
- /* begin */
60
- 1: int main(void) {return 0;}/* end */
61
-
62
- "g++ -Werror -Wimplicit-fallthrough=0 -c conftest.cpp"
63
- checked program was:
64
- /* begin */
65
- 1: int main(void) {return 0;}/* end */
66
-
67
- "g++ -Werror -Wmissing-noreturn -c conftest.cpp"
68
- checked program was:
69
- /* begin */
70
- 1: int main(void) {return 0;}/* end */
71
-
72
- "g++ -Werror -Wcast-function-type -c conftest.cpp"
73
- checked program was:
74
- /* begin */
75
- 1: int main(void) {return 0;}/* end */
76
-
77
- "g++ -Werror -Wconstant-logical-operand -c conftest.cpp"
78
- g++: error: unrecognized command line option ‘-Wconstant-logical-operand’; did you mean ‘-Wno-tautological-compare’?
79
- checked program was:
80
- /* begin */
81
- 1: int main(void) {return 0;}/* end */
82
-
83
- "g++ -Werror -Wlong-long -c conftest.cpp"
84
- checked program was:
85
- /* begin */
86
- 1: int main(void) {return 0;}/* end */
87
-
88
- "g++ -Werror -Wmissing-field-initializers -c conftest.cpp"
89
- checked program was:
90
- /* begin */
91
- 1: int main(void) {return 0;}/* end */
92
-
93
- "g++ -Werror -Woverlength-strings -c conftest.cpp"
94
- checked program was:
95
- /* begin */
96
- 1: int main(void) {return 0;}/* end */
97
-
98
- "g++ -Werror -Wpacked-bitfield-compat -c conftest.cpp"
99
- checked program was:
100
- /* begin */
101
- 1: int main(void) {return 0;}/* end */
102
-
103
- "g++ -Werror -Wparentheses-equality -c conftest.cpp"
104
- g++: error: unrecognized command line option ‘-Wparentheses-equality’; did you mean ‘-Wparentheses’?
105
- checked program was:
106
- /* begin */
107
- 1: int main(void) {return 0;}/* end */
108
-
109
- "g++ -Werror -Wself-assign -c conftest.cpp"
110
- g++: error: unrecognized command line option ‘-Wself-assign’; did you mean ‘-Wcast-align’?
111
- checked program was:
112
- /* begin */
113
- 1: int main(void) {return 0;}/* end */
114
-
115
- "g++ -Werror -Wtautological-compare -c conftest.cpp"
116
- checked program was:
117
- /* begin */
118
- 1: int main(void) {return 0;}/* end */
119
-
120
- "g++ -Werror -Wunused-parameter -c conftest.cpp"
121
- checked program was:
122
- /* begin */
123
- 1: int main(void) {return 0;}/* end */
124
-
125
- "g++ -Werror -Wunused-value -c conftest.cpp"
126
- checked program was:
127
- /* begin */
128
- 1: int main(void) {return 0;}/* end */
129
-
130
- "g++ -Werror -Wsuggest-attribute=format -c conftest.cpp"
131
- checked program was:
132
- /* begin */
133
- 1: int main(void) {return 0;}/* end */
134
-
135
- "g++ -Werror -Wsuggest-attribute=noreturn -c conftest.cpp"
136
- checked program was:
137
- /* begin */
138
- 1: int main(void) {return 0;}/* end */
139
-
140
- "g++ -Werror -Wunused-variable -c conftest.cpp"
141
- checked program was:
142
- /* begin */
143
- 1: int main(void) {return 0;}/* end */
144
-
@@ -1,102 +0,0 @@
1
- #include <ruby.hpp>
2
-
3
- extern "C" void
4
- Init_object(void)
5
- {
6
- rb::Class klass("ObjectMethods");
7
- klass.define_method("to_bool_true", [](VALUE self) {
8
- rb::Object object(Qtrue);
9
- if (object) {
10
- return Qtrue;
11
- } else {
12
- return Qfalse;
13
- }
14
- });
15
- klass.define_method("to_bool_false", [](VALUE self) {
16
- rb::Object object(Qfalse);
17
- if (object) {
18
- return Qtrue;
19
- } else {
20
- return Qfalse;
21
- }
22
- });
23
- klass.define_method("to_bool_nil", [](VALUE self) {
24
- rb::Object object(Qnil);
25
- if (object) {
26
- return Qtrue;
27
- } else {
28
- return Qfalse;
29
- }
30
- });
31
- klass.define_method("to_ruby", [](int argc, VALUE *argv, VALUE self) {
32
- VALUE rb_object;
33
- rb_scan_args(argc, argv, "1", &rb_object);
34
- rb::Object object(rb_object);
35
- return static_cast<VALUE>(object);
36
- });
37
- klass.define_method("send_no_arguments", [](int argc, VALUE *argv, VALUE self) {
38
- VALUE rb_receiver;
39
- VALUE rb_method_name;
40
- rb_scan_args(argc, argv, "2", &rb_receiver, &rb_method_name);
41
- rb::Object receiver(rb_receiver);
42
- rb::Object method_name(rb_method_name);
43
- auto result = receiver.send(method_name);
44
- return static_cast<VALUE>(result);
45
- });
46
- klass.define_method("send_two_arguments", [](int argc, VALUE *argv, VALUE self) {
47
- VALUE rb_receiver;
48
- VALUE rb_method_name;
49
- VALUE rb_arg1;
50
- VALUE rb_arg2;
51
- rb_scan_args(argc, argv, "4",
52
- &rb_receiver,
53
- &rb_method_name,
54
- &rb_arg1,
55
- &rb_arg2);
56
- rb::Object receiver(rb_receiver);
57
- rb::Object method_name(rb_method_name);
58
- auto result = receiver.send(method_name, {rb_arg1, rb_arg2});
59
- return static_cast<VALUE>(result);
60
- });
61
- klass.define_method("send_block", [](int argc, VALUE *argv, VALUE self) {
62
- VALUE rb_receiver;
63
- VALUE rb_method_name;
64
- rb_scan_args(argc, argv, "2",
65
- &rb_receiver,
66
- &rb_method_name);
67
- rb::Object receiver(rb_receiver);
68
- rb::Object method_name(rb_method_name);
69
- auto result = receiver.send(method_name,
70
- {},
71
- [](VALUE rb_n) -> VALUE {
72
- auto n = rb::Object(rb_n);
73
- auto n_raw = rb::cast<int32_t>(n);
74
- return rb::cast<rb::Object>(n_raw * n_raw);
75
- });
76
- return static_cast<VALUE>(result);
77
- });
78
- klass.define_method("ivar_set", [](int argc, VALUE *argv, VALUE self) {
79
- VALUE rb_receiver;
80
- VALUE rb_name;
81
- VALUE rb_value;
82
- rb_scan_args(argc, argv, "3",
83
- &rb_receiver,
84
- &rb_name,
85
- &rb_value);
86
- rb::Object receiver(rb_receiver);
87
- rb::Object name(rb_name);
88
- auto result = receiver.ivar_set(name, rb_value);
89
- return static_cast<VALUE>(result);
90
- });
91
- klass.define_method("ivar_get", [](int argc, VALUE *argv, VALUE self) {
92
- VALUE rb_receiver;
93
- VALUE rb_name;
94
- rb_scan_args(argc, argv, "2",
95
- &rb_receiver,
96
- &rb_name);
97
- rb::Object receiver(rb_receiver);
98
- rb::Object name(rb_name);
99
- auto result = receiver.ivar_get(name);
100
- return static_cast<VALUE>(result);
101
- });
102
- }
Binary file
Binary file