keyme-rice 1.5.1.keyme

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 (202) hide show
  1. checksums.yaml +15 -0
  2. data/COPYING +23 -0
  3. data/Doxyfile +1253 -0
  4. data/Makefile.am +26 -0
  5. data/Makefile.in +853 -0
  6. data/README +1124 -0
  7. data/README.mingw +8 -0
  8. data/Rakefile +34 -0
  9. data/aclocal.m4 +971 -0
  10. data/bootstrap +8 -0
  11. data/config.guess +1530 -0
  12. data/config.sub +1773 -0
  13. data/configure +7121 -0
  14. data/configure.ac +52 -0
  15. data/depcomp +688 -0
  16. data/doxygen.ac +314 -0
  17. data/doxygen.am +186 -0
  18. data/extconf.rb +51 -0
  19. data/install-sh +527 -0
  20. data/missing +331 -0
  21. data/post-autoconf.rb +22 -0
  22. data/post-automake.rb +28 -0
  23. data/rice/Address_Registration_Guard.cpp +22 -0
  24. data/rice/Address_Registration_Guard.hpp +7 -0
  25. data/rice/Address_Registration_Guard.ipp +37 -0
  26. data/rice/Address_Registration_Guard_defn.hpp +75 -0
  27. data/rice/Arg.hpp +8 -0
  28. data/rice/Arg_impl.hpp +127 -0
  29. data/rice/Arg_operators.cpp +21 -0
  30. data/rice/Arg_operators.hpp +19 -0
  31. data/rice/Array.hpp +220 -0
  32. data/rice/Array.ipp +263 -0
  33. data/rice/Builtin_Object.hpp +8 -0
  34. data/rice/Builtin_Object.ipp +50 -0
  35. data/rice/Builtin_Object_defn.hpp +50 -0
  36. data/rice/Class.cpp +57 -0
  37. data/rice/Class.hpp +8 -0
  38. data/rice/Class.ipp +6 -0
  39. data/rice/Class_defn.hpp +83 -0
  40. data/rice/Constructor.hpp +368 -0
  41. data/rice/Critical_Guard.hpp +40 -0
  42. data/rice/Critical_Guard.ipp +26 -0
  43. data/rice/Data_Object.hpp +8 -0
  44. data/rice/Data_Object.ipp +133 -0
  45. data/rice/Data_Object_defn.hpp +138 -0
  46. data/rice/Data_Type.cpp +54 -0
  47. data/rice/Data_Type.hpp +8 -0
  48. data/rice/Data_Type.ipp +365 -0
  49. data/rice/Data_Type_defn.hpp +261 -0
  50. data/rice/Data_Type_fwd.hpp +12 -0
  51. data/rice/Director.cpp +13 -0
  52. data/rice/Director.hpp +39 -0
  53. data/rice/Enum.hpp +117 -0
  54. data/rice/Enum.ipp +246 -0
  55. data/rice/Exception.cpp +59 -0
  56. data/rice/Exception.hpp +9 -0
  57. data/rice/Exception_Base.hpp +8 -0
  58. data/rice/Exception_Base.ipp +13 -0
  59. data/rice/Exception_Base_defn.hpp +27 -0
  60. data/rice/Exception_defn.hpp +69 -0
  61. data/rice/Hash.hpp +227 -0
  62. data/rice/Hash.ipp +330 -0
  63. data/rice/Identifier.cpp +8 -0
  64. data/rice/Identifier.hpp +50 -0
  65. data/rice/Identifier.ipp +33 -0
  66. data/rice/Jump_Tag.hpp +24 -0
  67. data/rice/Makefile.am +129 -0
  68. data/rice/Makefile.in +769 -0
  69. data/rice/Module.cpp +84 -0
  70. data/rice/Module.hpp +8 -0
  71. data/rice/Module.ipp +6 -0
  72. data/rice/Module_defn.hpp +88 -0
  73. data/rice/Module_impl.hpp +281 -0
  74. data/rice/Module_impl.ipp +348 -0
  75. data/rice/Object.cpp +160 -0
  76. data/rice/Object.hpp +8 -0
  77. data/rice/Object.ipp +19 -0
  78. data/rice/Object_defn.hpp +191 -0
  79. data/rice/Require_Guard.hpp +21 -0
  80. data/rice/String.cpp +94 -0
  81. data/rice/String.hpp +89 -0
  82. data/rice/Struct.cpp +117 -0
  83. data/rice/Struct.hpp +162 -0
  84. data/rice/Struct.ipp +26 -0
  85. data/rice/Symbol.cpp +25 -0
  86. data/rice/Symbol.hpp +66 -0
  87. data/rice/Symbol.ipp +44 -0
  88. data/rice/VM.cpp +82 -0
  89. data/rice/VM.hpp +32 -0
  90. data/rice/config.hpp +44 -0
  91. data/rice/config.hpp.in +43 -0
  92. data/rice/detail/Arguments.hpp +118 -0
  93. data/rice/detail/Auto_Function_Wrapper.hpp +898 -0
  94. data/rice/detail/Auto_Function_Wrapper.ipp +3694 -0
  95. data/rice/detail/Auto_Member_Function_Wrapper.hpp +897 -0
  96. data/rice/detail/Auto_Member_Function_Wrapper.ipp +2774 -0
  97. data/rice/detail/Caster.hpp +103 -0
  98. data/rice/detail/Exception_Handler.hpp +8 -0
  99. data/rice/detail/Exception_Handler.ipp +68 -0
  100. data/rice/detail/Exception_Handler_defn.hpp +96 -0
  101. data/rice/detail/Iterator.hpp +93 -0
  102. data/rice/detail/Not_Copyable.hpp +25 -0
  103. data/rice/detail/Wrapped_Function.hpp +33 -0
  104. data/rice/detail/cfp.hpp +24 -0
  105. data/rice/detail/cfp.ipp +51 -0
  106. data/rice/detail/check_ruby_type.cpp +27 -0
  107. data/rice/detail/check_ruby_type.hpp +23 -0
  108. data/rice/detail/creation_funcs.hpp +37 -0
  109. data/rice/detail/creation_funcs.ipp +36 -0
  110. data/rice/detail/default_allocation_func.hpp +23 -0
  111. data/rice/detail/default_allocation_func.ipp +11 -0
  112. data/rice/detail/define_method_and_auto_wrap.hpp +31 -0
  113. data/rice/detail/define_method_and_auto_wrap.ipp +30 -0
  114. data/rice/detail/demangle.cpp +56 -0
  115. data/rice/detail/demangle.hpp +19 -0
  116. data/rice/detail/env.hpp +19 -0
  117. data/rice/detail/from_ruby.hpp +43 -0
  118. data/rice/detail/from_ruby.ipp +60 -0
  119. data/rice/detail/method_data.cpp +159 -0
  120. data/rice/detail/method_data.hpp +21 -0
  121. data/rice/detail/mininode.cpp +1220 -0
  122. data/rice/detail/mininode.hpp +320 -0
  123. data/rice/detail/node.hpp +13 -0
  124. data/rice/detail/object_call.hpp +69 -0
  125. data/rice/detail/object_call.ipp +131 -0
  126. data/rice/detail/protect.cpp +29 -0
  127. data/rice/detail/protect.hpp +34 -0
  128. data/rice/detail/ruby.hpp +84 -0
  129. data/rice/detail/ruby_version_code.hpp +6 -0
  130. data/rice/detail/ruby_version_code.hpp.in +6 -0
  131. data/rice/detail/rubysig.hpp +19 -0
  132. data/rice/detail/st.hpp +22 -0
  133. data/rice/detail/to_ruby.hpp +22 -0
  134. data/rice/detail/to_ruby.ipp +36 -0
  135. data/rice/detail/traits.hpp +43 -0
  136. data/rice/detail/win32.hpp +16 -0
  137. data/rice/detail/wrap_function.hpp +341 -0
  138. data/rice/detail/wrap_function.ipp +514 -0
  139. data/rice/global_function.hpp +33 -0
  140. data/rice/global_function.ipp +22 -0
  141. data/rice/protect.hpp +92 -0
  142. data/rice/protect.ipp +1134 -0
  143. data/rice/ruby_mark.hpp +13 -0
  144. data/rice/ruby_try_catch.hpp +86 -0
  145. data/rice/rubypp.rb +97 -0
  146. data/rice/to_from_ruby.hpp +8 -0
  147. data/rice/to_from_ruby.ipp +294 -0
  148. data/rice/to_from_ruby_defn.hpp +71 -0
  149. data/ruby/Makefile.am +1 -0
  150. data/ruby/Makefile.in +569 -0
  151. data/ruby/lib/Makefile.am +3 -0
  152. data/ruby/lib/Makefile.in +423 -0
  153. data/ruby/lib/mkmf-rice.rb.in +213 -0
  154. data/ruby/lib/version.rb +3 -0
  155. data/ruby.ac +136 -0
  156. data/sample/Makefile.am +47 -0
  157. data/sample/Makefile.in +408 -0
  158. data/sample/enum/extconf.rb +3 -0
  159. data/sample/enum/sample_enum.cpp +54 -0
  160. data/sample/enum/test.rb +8 -0
  161. data/sample/inheritance/animals.cpp +98 -0
  162. data/sample/inheritance/extconf.rb +3 -0
  163. data/sample/inheritance/test.rb +7 -0
  164. data/sample/map/extconf.rb +3 -0
  165. data/sample/map/map.cpp +81 -0
  166. data/sample/map/test.rb +7 -0
  167. data/test/Makefile.am +77 -0
  168. data/test/Makefile.in +820 -0
  169. data/test/ext/Makefile.am +43 -0
  170. data/test/ext/Makefile.in +404 -0
  171. data/test/ext/t1/Foo.hpp +10 -0
  172. data/test/ext/t1/extconf.rb +2 -0
  173. data/test/ext/t1/t1.cpp +15 -0
  174. data/test/ext/t2/extconf.rb +2 -0
  175. data/test/ext/t2/t2.cpp +11 -0
  176. data/test/test_Address_Registration_Guard.cpp +43 -0
  177. data/test/test_Array.cpp +241 -0
  178. data/test/test_Builtin_Object.cpp +72 -0
  179. data/test/test_Class.cpp +498 -0
  180. data/test/test_Constructor.cpp +128 -0
  181. data/test/test_Critical_Guard.cpp +51 -0
  182. data/test/test_Data_Object.cpp +275 -0
  183. data/test/test_Data_Type.cpp +348 -0
  184. data/test/test_Director.cpp +303 -0
  185. data/test/test_Enum.cpp +195 -0
  186. data/test/test_Exception.cpp +46 -0
  187. data/test/test_Hash.cpp +198 -0
  188. data/test/test_Identifier.cpp +70 -0
  189. data/test/test_Jump_Tag.cpp +17 -0
  190. data/test/test_Memory_Management.cpp +50 -0
  191. data/test/test_Module.cpp +497 -0
  192. data/test/test_Object.cpp +148 -0
  193. data/test/test_String.cpp +94 -0
  194. data/test/test_Struct.cpp +192 -0
  195. data/test/test_Symbol.cpp +63 -0
  196. data/test/test_To_From_Ruby.cpp +321 -0
  197. data/test/test_VM.cpp +26 -0
  198. data/test/test_global_functions.cpp +114 -0
  199. data/test/test_rice.rb +43 -0
  200. data/test/unittest.cpp +136 -0
  201. data/test/unittest.hpp +294 -0
  202. metadata +259 -0
data/missing ADDED
@@ -0,0 +1,331 @@
1
+ #! /bin/sh
2
+ # Common stub for a few missing GNU programs while installing.
3
+
4
+ scriptversion=2012-01-06.13; # UTC
5
+
6
+ # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
7
+ # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
8
+ # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9
+
10
+ # This program is free software; you can redistribute it and/or modify
11
+ # it under the terms of the GNU General Public License as published by
12
+ # the Free Software Foundation; either version 2, or (at your option)
13
+ # any later version.
14
+
15
+ # This program is distributed in the hope that it will be useful,
16
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+ # GNU General Public License for more details.
19
+
20
+ # You should have received a copy of the GNU General Public License
21
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+
23
+ # As a special exception to the GNU General Public License, if you
24
+ # distribute this file as part of a program that contains a
25
+ # configuration script generated by Autoconf, you may include it under
26
+ # the same distribution terms that you use for the rest of that program.
27
+
28
+ if test $# -eq 0; then
29
+ echo 1>&2 "Try \`$0 --help' for more information"
30
+ exit 1
31
+ fi
32
+
33
+ run=:
34
+ sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
35
+ sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
36
+
37
+ # In the cases where this matters, `missing' is being run in the
38
+ # srcdir already.
39
+ if test -f configure.ac; then
40
+ configure_ac=configure.ac
41
+ else
42
+ configure_ac=configure.in
43
+ fi
44
+
45
+ msg="missing on your system"
46
+
47
+ case $1 in
48
+ --run)
49
+ # Try to run requested program, and just exit if it succeeds.
50
+ run=
51
+ shift
52
+ "$@" && exit 0
53
+ # Exit code 63 means version mismatch. This often happens
54
+ # when the user try to use an ancient version of a tool on
55
+ # a file that requires a minimum version. In this case we
56
+ # we should proceed has if the program had been absent, or
57
+ # if --run hadn't been passed.
58
+ if test $? = 63; then
59
+ run=:
60
+ msg="probably too old"
61
+ fi
62
+ ;;
63
+
64
+ -h|--h|--he|--hel|--help)
65
+ echo "\
66
+ $0 [OPTION]... PROGRAM [ARGUMENT]...
67
+
68
+ Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
69
+ error status if there is no known handling for PROGRAM.
70
+
71
+ Options:
72
+ -h, --help display this help and exit
73
+ -v, --version output version information and exit
74
+ --run try to run the given command, and emulate it if it fails
75
+
76
+ Supported PROGRAM values:
77
+ aclocal touch file \`aclocal.m4'
78
+ autoconf touch file \`configure'
79
+ autoheader touch file \`config.h.in'
80
+ autom4te touch the output file, or create a stub one
81
+ automake touch all \`Makefile.in' files
82
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
83
+ flex create \`lex.yy.c', if possible, from existing .c
84
+ help2man touch the output file
85
+ lex create \`lex.yy.c', if possible, from existing .c
86
+ makeinfo touch the output file
87
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
88
+
89
+ Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
90
+ \`g' are ignored when checking the name.
91
+
92
+ Send bug reports to <bug-automake@gnu.org>."
93
+ exit $?
94
+ ;;
95
+
96
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
97
+ echo "missing $scriptversion (GNU Automake)"
98
+ exit $?
99
+ ;;
100
+
101
+ -*)
102
+ echo 1>&2 "$0: Unknown \`$1' option"
103
+ echo 1>&2 "Try \`$0 --help' for more information"
104
+ exit 1
105
+ ;;
106
+
107
+ esac
108
+
109
+ # normalize program name to check for.
110
+ program=`echo "$1" | sed '
111
+ s/^gnu-//; t
112
+ s/^gnu//; t
113
+ s/^g//; t'`
114
+
115
+ # Now exit if we have it, but it failed. Also exit now if we
116
+ # don't have it and --version was passed (most likely to detect
117
+ # the program). This is about non-GNU programs, so use $1 not
118
+ # $program.
119
+ case $1 in
120
+ lex*|yacc*)
121
+ # Not GNU programs, they don't have --version.
122
+ ;;
123
+
124
+ *)
125
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
126
+ # We have it, but it failed.
127
+ exit 1
128
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
129
+ # Could not run --version or --help. This is probably someone
130
+ # running `$TOOL --version' or `$TOOL --help' to check whether
131
+ # $TOOL exists and not knowing $TOOL uses missing.
132
+ exit 1
133
+ fi
134
+ ;;
135
+ esac
136
+
137
+ # If it does not exist, or fails to run (possibly an outdated version),
138
+ # try to emulate it.
139
+ case $program in
140
+ aclocal*)
141
+ echo 1>&2 "\
142
+ WARNING: \`$1' is $msg. You should only need it if
143
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
144
+ to install the \`Automake' and \`Perl' packages. Grab them from
145
+ any GNU archive site."
146
+ touch aclocal.m4
147
+ ;;
148
+
149
+ autoconf*)
150
+ echo 1>&2 "\
151
+ WARNING: \`$1' is $msg. You should only need it if
152
+ you modified \`${configure_ac}'. You might want to install the
153
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
154
+ archive site."
155
+ touch configure
156
+ ;;
157
+
158
+ autoheader*)
159
+ echo 1>&2 "\
160
+ WARNING: \`$1' is $msg. You should only need it if
161
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
162
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
163
+ from any GNU archive site."
164
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
165
+ test -z "$files" && files="config.h"
166
+ touch_files=
167
+ for f in $files; do
168
+ case $f in
169
+ *:*) touch_files="$touch_files "`echo "$f" |
170
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
171
+ *) touch_files="$touch_files $f.in";;
172
+ esac
173
+ done
174
+ touch $touch_files
175
+ ;;
176
+
177
+ automake*)
178
+ echo 1>&2 "\
179
+ WARNING: \`$1' is $msg. You should only need it if
180
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
181
+ You might want to install the \`Automake' and \`Perl' packages.
182
+ Grab them from any GNU archive site."
183
+ find . -type f -name Makefile.am -print |
184
+ sed 's/\.am$/.in/' |
185
+ while read f; do touch "$f"; done
186
+ ;;
187
+
188
+ autom4te*)
189
+ echo 1>&2 "\
190
+ WARNING: \`$1' is needed, but is $msg.
191
+ You might have modified some files without having the
192
+ proper tools for further handling them.
193
+ You can get \`$1' as part of \`Autoconf' from any GNU
194
+ archive site."
195
+
196
+ file=`echo "$*" | sed -n "$sed_output"`
197
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
198
+ if test -f "$file"; then
199
+ touch $file
200
+ else
201
+ test -z "$file" || exec >$file
202
+ echo "#! /bin/sh"
203
+ echo "# Created by GNU Automake missing as a replacement of"
204
+ echo "# $ $@"
205
+ echo "exit 0"
206
+ chmod +x $file
207
+ exit 1
208
+ fi
209
+ ;;
210
+
211
+ bison*|yacc*)
212
+ echo 1>&2 "\
213
+ WARNING: \`$1' $msg. You should only need it if
214
+ you modified a \`.y' file. You may need the \`Bison' package
215
+ in order for those modifications to take effect. You can get
216
+ \`Bison' from any GNU archive site."
217
+ rm -f y.tab.c y.tab.h
218
+ if test $# -ne 1; then
219
+ eval LASTARG=\${$#}
220
+ case $LASTARG in
221
+ *.y)
222
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
223
+ if test -f "$SRCFILE"; then
224
+ cp "$SRCFILE" y.tab.c
225
+ fi
226
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
227
+ if test -f "$SRCFILE"; then
228
+ cp "$SRCFILE" y.tab.h
229
+ fi
230
+ ;;
231
+ esac
232
+ fi
233
+ if test ! -f y.tab.h; then
234
+ echo >y.tab.h
235
+ fi
236
+ if test ! -f y.tab.c; then
237
+ echo 'main() { return 0; }' >y.tab.c
238
+ fi
239
+ ;;
240
+
241
+ lex*|flex*)
242
+ echo 1>&2 "\
243
+ WARNING: \`$1' is $msg. You should only need it if
244
+ you modified a \`.l' file. You may need the \`Flex' package
245
+ in order for those modifications to take effect. You can get
246
+ \`Flex' from any GNU archive site."
247
+ rm -f lex.yy.c
248
+ if test $# -ne 1; then
249
+ eval LASTARG=\${$#}
250
+ case $LASTARG in
251
+ *.l)
252
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
253
+ if test -f "$SRCFILE"; then
254
+ cp "$SRCFILE" lex.yy.c
255
+ fi
256
+ ;;
257
+ esac
258
+ fi
259
+ if test ! -f lex.yy.c; then
260
+ echo 'main() { return 0; }' >lex.yy.c
261
+ fi
262
+ ;;
263
+
264
+ help2man*)
265
+ echo 1>&2 "\
266
+ WARNING: \`$1' is $msg. You should only need it if
267
+ you modified a dependency of a manual page. You may need the
268
+ \`Help2man' package in order for those modifications to take
269
+ effect. You can get \`Help2man' from any GNU archive site."
270
+
271
+ file=`echo "$*" | sed -n "$sed_output"`
272
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
273
+ if test -f "$file"; then
274
+ touch $file
275
+ else
276
+ test -z "$file" || exec >$file
277
+ echo ".ab help2man is required to generate this page"
278
+ exit $?
279
+ fi
280
+ ;;
281
+
282
+ makeinfo*)
283
+ echo 1>&2 "\
284
+ WARNING: \`$1' is $msg. You should only need it if
285
+ you modified a \`.texi' or \`.texinfo' file, or any other file
286
+ indirectly affecting the aspect of the manual. The spurious
287
+ call might also be the consequence of using a buggy \`make' (AIX,
288
+ DU, IRIX). You might want to install the \`Texinfo' package or
289
+ the \`GNU make' package. Grab either from any GNU archive site."
290
+ # The file to touch is that specified with -o ...
291
+ file=`echo "$*" | sed -n "$sed_output"`
292
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
293
+ if test -z "$file"; then
294
+ # ... or it is the one specified with @setfilename ...
295
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
296
+ file=`sed -n '
297
+ /^@setfilename/{
298
+ s/.* \([^ ]*\) *$/\1/
299
+ p
300
+ q
301
+ }' $infile`
302
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
303
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
304
+ fi
305
+ # If the file does not exist, the user really needs makeinfo;
306
+ # let's fail without touching anything.
307
+ test -f $file || exit 1
308
+ touch $file
309
+ ;;
310
+
311
+ *)
312
+ echo 1>&2 "\
313
+ WARNING: \`$1' is needed, and is $msg.
314
+ You might have modified some files without having the
315
+ proper tools for further handling them. Check the \`README' file,
316
+ it often tells you about the needed prerequisites for installing
317
+ this package. You may also peek at any GNU archive site, in case
318
+ some other package would contain this missing \`$1' program."
319
+ exit 1
320
+ ;;
321
+ esac
322
+
323
+ exit 0
324
+
325
+ # Local variables:
326
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
327
+ # time-stamp-start: "scriptversion="
328
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
329
+ # time-stamp-time-zone: "UTC"
330
+ # time-stamp-end: "; # UTC"
331
+ # End:
data/post-autoconf.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'fileutils'
2
+ require 'find'
3
+
4
+ def process(file)
5
+ puts "Post-processing #{file}"
6
+ File.open(file) do |input|
7
+ File.open("#{file}.pp", "w") do |output|
8
+ input.each_line do |line|
9
+ yield output, line
10
+ end
11
+ end
12
+ end
13
+ FileUtils.mv("#{file}.pp", "#{file}")
14
+ end
15
+
16
+ process("configure") do |out, line|
17
+ # autoconf doesn't properly enclose $srcdir and $am_aux_dir in quotes
18
+ line.gsub!(/([^"'])(\$srcdir)/, '\1"\2"')
19
+ line.gsub!(/([^"'])(\$am_aux_dir)/, '\1\"\2\"')
20
+ out.puts line
21
+ end
22
+ FileUtils.chmod(0700, "configure")
data/post-automake.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'fileutils'
2
+ require 'find'
3
+
4
+ def process(file)
5
+ puts "Post-processing #{file}"
6
+ File.open(file) do |input|
7
+ File.open("#{file}.pp", "w") do |output|
8
+ input.each_line do |line|
9
+ yield output, line
10
+ end
11
+ end
12
+ end
13
+ FileUtils.mv("#{file}.pp", "#{file}")
14
+ end
15
+
16
+ Find.find(".") do |file|
17
+ if file =~ /Makefile.in$/ then
18
+ process(file) do |out, line|
19
+ # automake doesn't properly enclose $distdir in quotes
20
+ if line !~ /echo / then
21
+ line.gsub!(/([^"'])(\$\(distdir\))/, '\1"\2"')
22
+ end
23
+ line.gsub!(/(\$\(MKDIR_P\).*`)/, 'eval \1')
24
+ out.puts line
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,22 @@
1
+ #include "Address_Registration_Guard.hpp"
2
+
3
+ bool Rice::Address_Registration_Guard::enabled = true;
4
+ bool Rice::Address_Registration_Guard::exit_handler_registered = false;
5
+
6
+ static void disable_all_guards(VALUE)
7
+ {
8
+ Rice::Address_Registration_Guard::disable();
9
+ }
10
+
11
+ void Rice::Address_Registration_Guard::registerExitHandler()
12
+ {
13
+ if (exit_handler_registered) return;
14
+ rb_set_end_proc(&disable_all_guards, Qnil);
15
+ exit_handler_registered = true;
16
+ }
17
+
18
+ void Rice::Address_Registration_Guard::disable()
19
+ {
20
+ enabled = false;
21
+ }
22
+
@@ -0,0 +1,7 @@
1
+ #ifndef Rice__Address_Registration_Guard__hpp_
2
+ #define Rice__Address_Registration_Guard__hpp_
3
+
4
+ #include "Address_Registration_Guard_defn.hpp"
5
+ #include "Address_Registration_Guard.ipp"
6
+
7
+ #endif // Rice__Address_Registration_Guard__hpp_
@@ -0,0 +1,37 @@
1
+ #include "Object.hpp"
2
+ #include <algorithm>
3
+
4
+ inline Rice::Address_Registration_Guard::
5
+ Address_Registration_Guard(VALUE * address)
6
+ : address_(address)
7
+ {
8
+ registerExitHandler();
9
+ rb_gc_register_address(address);
10
+ }
11
+
12
+ inline Rice::Address_Registration_Guard::
13
+ Address_Registration_Guard(Object * object)
14
+ : address_(const_cast<VALUE *>(&object->value()))
15
+ {
16
+ registerExitHandler();
17
+ rb_gc_register_address(address_);
18
+ }
19
+
20
+ inline Rice::Address_Registration_Guard::
21
+ ~Address_Registration_Guard()
22
+ {
23
+ if (enabled)
24
+ rb_gc_unregister_address(address_);
25
+ }
26
+
27
+ inline VALUE * Rice::Address_Registration_Guard::
28
+ address() const
29
+ {
30
+ return address_;
31
+ }
32
+
33
+ inline void Rice::Address_Registration_Guard::
34
+ swap(Rice::Address_Registration_Guard & other)
35
+ {
36
+ std::swap(address_, other.address_);
37
+ }
@@ -0,0 +1,75 @@
1
+ #ifndef Rice__Address_Registration_Guard_defn__hpp_
2
+ #define Rice__Address_Registration_Guard_defn__hpp_
3
+
4
+ #include "Object_defn.hpp"
5
+ #include "detail/ruby.hpp"
6
+ #include "detail/Not_Copyable.hpp"
7
+
8
+ namespace Rice
9
+ {
10
+
11
+ //! A guard to register a given address with the GC.
12
+ /*! Calls rb_gc_register_address upon construction and
13
+ * rb_gc_unregister_address upon destruction.
14
+ * For example:
15
+ * \code
16
+ * Class Foo
17
+ * {
18
+ * public:
19
+ * Foo()
20
+ * : string_(rb_str_new2())
21
+ * , guard_(&string_);
22
+ *
23
+ * private:
24
+ * VALUE string_;
25
+ * Address_Registration_Guard guard_;
26
+ * };
27
+ * \endcode
28
+ */
29
+ class Address_Registration_Guard
30
+ : private detail::Not_Copyable
31
+ {
32
+ public:
33
+ //! Register an address with the GC.
34
+ /* \param address The address to register with the GC. The address
35
+ * must point to a valid ruby object (RObject).
36
+ */
37
+ Address_Registration_Guard(VALUE * address);
38
+
39
+ //! Register an Object with the GC.
40
+ /*! \param object The Object to register with the GC. The object must
41
+ * not be destroyed before the Address_Registration_Guard is
42
+ * destroyed.
43
+ */
44
+ Address_Registration_Guard(Object * object);
45
+
46
+ //! Unregister an address/Object with the GC.
47
+ /*! Destruct an Address_Registration_Guard. The address registered
48
+ * with the Address_Registration_Guard when it was constructed will
49
+ * be unregistered from the GC.
50
+ */
51
+ ~Address_Registration_Guard();
52
+
53
+ //! Get the address that is registered with the GC.
54
+ VALUE * address() const;
55
+
56
+ //! Swap with another Address_Registration_Guard.
57
+ void swap(Address_Registration_Guard & other);
58
+
59
+ /** Called during Ruby's exit process since we should not call
60
+ * rb_gc unregister_address there
61
+ */
62
+ static void disable();
63
+
64
+ private:
65
+ static bool enabled;
66
+ static bool exit_handler_registered;
67
+
68
+ static void registerExitHandler();
69
+
70
+ VALUE * address_;
71
+ };
72
+
73
+ } // namespace Rice
74
+
75
+ #endif // Rice__Address_Registration_Guard_defn__hpp_
data/rice/Arg.hpp ADDED
@@ -0,0 +1,8 @@
1
+ #ifndef Rice__Arg__hpp_
2
+ #define Rice__Arg__hpp_
3
+
4
+ #include "Arg_impl.hpp"
5
+ #include "detail/Arguments.hpp"
6
+ #include "Arg_operators.hpp"
7
+
8
+ #endif // Rice__Arg__hpp_
data/rice/Arg_impl.hpp ADDED
@@ -0,0 +1,127 @@
1
+ #ifndef Rice__Arg_Impl_hpp_
2
+ #define Rice__Arg_Impl_hpp_
3
+
4
+ namespace Rice {
5
+
6
+ //! Helper for defining default arguments of a method
7
+ /*! This class exposes the ability to define the default values of a
8
+ * wrapped method. Inspired by how Boost.Python handles keyword and
9
+ * default arguments, the syntax is simple:
10
+ *
11
+ * define_method(
12
+ * "method",
13
+ * &method,
14
+ * (Arg("arg1"), Arg("arg2") = 3, Arg("arg3") = true)
15
+ * );
16
+ *
17
+ * which means "for method &method, it takes 3 arguments
18
+ * [arg1, arg2, arg3]. Of these arguments, arg2's default is 3
19
+ * and arg3's default is true.
20
+ *
21
+ * It may be required to explicitly cast the type of the default
22
+ * value to prevent compilation errors.
23
+ */
24
+ class Arg
25
+ {
26
+ public:
27
+ //! Initialize a new Arg with the name of the argument
28
+ /*! We require the name of the argument because 1) it makes code
29
+ * easier to read and 2) hopefully Ruby gets keyword arguments
30
+ * in the future and this means Rice will be ready for it.
31
+ */
32
+ Arg(const char* name)
33
+ : name_(name)
34
+ , defaultValue(0)
35
+ {}
36
+
37
+ //! Copy Constructor
38
+ Arg(const Arg& other)
39
+ : name_(other.name()),
40
+ defaultValue(other.defaultValue ? other.defaultValue->clone() : 0)
41
+ {}
42
+
43
+ virtual ~Arg()
44
+ {
45
+ if(defaultValue) {
46
+ delete defaultValue;
47
+ }
48
+ }
49
+
50
+ //! Set the default value for this Arg
51
+ /*! Set the default value for this argument.
52
+ * If this isn't called on this Arg, then this
53
+ * Arg is required in the method call.
54
+ *
55
+ * \param val the value to store as default
56
+ */
57
+ template<typename Arg_Type>
58
+ Arg& operator=(Arg_Type val)
59
+ {
60
+ defaultValue = new type<Arg_Type>(val);
61
+ return *this;
62
+ }
63
+
64
+ //! Check if this Arg has a default value associated with it
65
+ bool hasDefaultValue() const {
66
+ return defaultValue != 0;
67
+ }
68
+
69
+ //! Return the default value associated with this Arg
70
+ /*! \return the type saved to this Arg
71
+ */
72
+ template<typename Arg_Type>
73
+ Arg_Type getDefaultValue()
74
+ {
75
+ return static_cast< type<Arg_Type>* >(defaultValue)->held;
76
+ }
77
+
78
+ //! Get the name of this Arg
79
+ const char* name() const
80
+ {
81
+ return name_;
82
+ }
83
+
84
+ private:
85
+
86
+ //! Name of the argument
87
+ const char* name_;
88
+
89
+ /**
90
+ * The following is a stripped down version of
91
+ * Boost.Any.
92
+ */
93
+
94
+ class type_base
95
+ {
96
+ public:
97
+ virtual ~type_base() {}
98
+ virtual type_base* clone() const = 0;
99
+ };
100
+
101
+ template<typename Type>
102
+ class type : public type_base
103
+ {
104
+ public:
105
+ type(Type value)
106
+ :held(value)
107
+ {}
108
+
109
+ virtual ~type() { }
110
+
111
+ virtual type_base* clone() const
112
+ {
113
+ return new type(held);
114
+ }
115
+
116
+ Type held;
117
+ };
118
+
119
+ public:
120
+
121
+ //! Our saved default value
122
+ type_base* defaultValue;
123
+ };
124
+
125
+ }
126
+
127
+ #endif // Rice__Arg_Impl_hpp_
@@ -0,0 +1,21 @@
1
+ #include "Arg_impl.hpp"
2
+ #include "detail/Arguments.hpp"
3
+ #include "Arg_operators.hpp"
4
+
5
+ namespace Rice {
6
+
7
+ Arguments* operator,(Arg arg1, Arg arg2)
8
+ {
9
+ Arguments* a = new Arguments();
10
+ a->add(arg1);
11
+ a->add(arg2);
12
+ return a;
13
+ }
14
+
15
+ Arguments* operator,(Arguments* arguments, Arg arg)
16
+ {
17
+ arguments->add(arg);
18
+ return arguments;
19
+ }
20
+
21
+ }
@@ -0,0 +1,19 @@
1
+ #ifndef Rice__Arg_Operators_hpp_
2
+ #define Rice__Arg_Operators_hpp_
3
+
4
+ namespace Rice
5
+ {
6
+
7
+ //! Build the list of Arg objects into an Arguments object
8
+ /*! Take a list of Arg objects and build up a single Argument
9
+ * object used later in method dispatch
10
+ */
11
+ Arguments* operator,(Arg arg1, Arg arg2);
12
+
13
+ /*! @see operator,(Arg, Arg)
14
+ */
15
+ Arguments* operator,(Arguments* arguments, Arg arg);
16
+
17
+ }
18
+
19
+ #endif // Rice__Arg_Operators_hpp_