utilrb 2.0.2.b2 → 2.1.0.rc1
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/.boring +40 -0
- data/.gitignore +13 -0
- data/.travis.yml +5 -0
- data/CMakeLists.txt +18 -0
- data/Gemfile +3 -0
- data/Makefile +8 -0
- data/Manifest.txt +0 -8
- data/{README.rd → README.md} +11 -7
- data/Rakefile +16 -63
- data/benchmarks/validate_options.rb +79 -0
- data/ext/utilrb/extconf.rb +1 -17
- data/ext/utilrb/utilrb.cc +0 -23
- data/lib/utilrb/column_formatter.rb +8 -5
- data/lib/utilrb/common.rb +1 -6
- data/lib/utilrb/enumerable/uniq.rb +2 -8
- data/lib/utilrb/event_loop.rb +5 -10
- data/lib/utilrb/kernel/load_dsl_file.rb +1 -2
- data/lib/utilrb/kernel/options.rb +25 -29
- data/lib/utilrb/logger/hierarchy.rb +0 -1
- data/lib/utilrb/logger/io.rb +3 -3
- data/lib/utilrb/logger/root.rb +12 -6
- data/lib/utilrb/module/ancestor_p.rb +0 -12
- data/lib/utilrb/module/is_singleton.rb +6 -0
- data/lib/utilrb/module/singleton_class_p.rb +14 -0
- data/lib/utilrb/object/attribute.rb +33 -65
- data/lib/utilrb/object/singleton_class.rb +1 -20
- data/lib/utilrb/pkgconfig.rb +21 -10
- data/lib/utilrb/socket/tcp_server.rb +2 -2
- data/lib/utilrb/spawn.rb +1 -1
- data/lib/utilrb/test.rb +65 -0
- data/lib/utilrb/thread_pool.rb +11 -13
- data/lib/utilrb/timepoints.rb +15 -0
- data/lib/utilrb/value_set.rb +10 -1
- data/lib/utilrb/version.rb +4 -0
- data/lib/utilrb/weakref.rb +11 -12
- data/lib/utilrb/yard.rb +0 -111
- data/lib/utilrb.rb +6 -1
- data/lib/yard-utilrb.rb +1 -0
- data/manifest.xml +19 -0
- data/package.xml +29 -0
- data/utilrb.gemspec +27 -0
- metadata +56 -107
- data/ext/utilrb/proc.c +0 -39
- data/ext/utilrb/readline.c +0 -52
- data/ext/utilrb/weakref.cc +0 -143
- data/lib/utilrb/models/inherited_enumerable.rb +0 -341
- data/lib/utilrb/models/registration.rb +0 -115
- data/lib/utilrb/module/inherited_enumerable.rb +0 -6
- data/lib/utilrb/objectstats.rb +0 -193
- data/lib/utilrb/ruby_object_graph.rb +0 -384
- data/test/data/test_pkgconfig.pc +0 -9
- data/test/data/test_pkgconfig_empty.pc +0 -10
- data/test/test_array.rb +0 -15
- data/test/test_config.rb +0 -4
- data/test/test_dir.rb +0 -22
- data/test/test_enumerable.rb +0 -119
- data/test/test_event_loop.rb +0 -407
- data/test/test_exception.rb +0 -38
- data/test/test_gc.rb +0 -34
- data/test/test_hash.rb +0 -102
- data/test/test_kernel.rb +0 -300
- data/test/test_logger.rb +0 -204
- data/test/test_misc.rb +0 -42
- data/test/test_models.rb +0 -212
- data/test/test_module.rb +0 -126
- data/test/test_object.rb +0 -77
- data/test/test_objectstats.rb +0 -26
- data/test/test_pkgconfig.rb +0 -84
- data/test/test_proc.rb +0 -31
- data/test/test_set.rb +0 -19
- data/test/test_thread_pool.rb +0 -409
- data/test/test_time.rb +0 -47
- data/test/test_unbound_method.rb +0 -23
- data/test/test_weakref.rb +0 -81
data/manifest.xml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
<package>
|
2
|
+
<description brief="Ruby toolkit">
|
3
|
+
This library is a collection of useful Ruby classes
|
4
|
+
</description>
|
5
|
+
<maintainer>Sylvain Joyeux/sylvain.joyeux@m4x.org</maintainer>
|
6
|
+
<copyright>
|
7
|
+
LAAS-CNRS/openrobots@laas.fr
|
8
|
+
DFKI/robotik@dfki.de
|
9
|
+
Sylvain Joyeux/sylvain.joyeux@m4x.org
|
10
|
+
</copyright>
|
11
|
+
<license>CeCILL-B (BSD-like)</license>
|
12
|
+
|
13
|
+
<rosdep name="ruby"/>
|
14
|
+
<rosdep name="bundler"/>
|
15
|
+
<rosdep name="facets" />
|
16
|
+
<rosdep name="rake-compiler" />
|
17
|
+
<test_depend package="flexmock" />
|
18
|
+
|
19
|
+
</package>
|
data/package.xml
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
<package>
|
2
|
+
<name>utilrb</name>
|
3
|
+
<version>1.6.6</version>
|
4
|
+
<description>
|
5
|
+
Ruby toolkit: This library is a collection of useful Ruby classes
|
6
|
+
</description>
|
7
|
+
<author>Sylvain Joyeux/sylvain.joyeux@m4x.org</author>
|
8
|
+
<maintainer email="orocos-dev@lists.mech.kuleuven.be">Orocos Development Team</maintainer>
|
9
|
+
<license>CeCILL-B (BSD-like)</license>
|
10
|
+
|
11
|
+
<buildtool_depend>cmake</buildtool_depend>
|
12
|
+
<run_depend>catkin</run_depend>
|
13
|
+
|
14
|
+
<build_depend>ruby</build_depend>
|
15
|
+
<build_depend>facets</build_depend>
|
16
|
+
<build_depend>hoe</build_depend>
|
17
|
+
<build_depend>rake-compiler</build_depend>
|
18
|
+
|
19
|
+
<run_depend>ruby</run_depend>
|
20
|
+
<run_depend>facets</run_depend>
|
21
|
+
<run_depend>hoe</run_depend>
|
22
|
+
|
23
|
+
<export>
|
24
|
+
<build_type>
|
25
|
+
cmake
|
26
|
+
</build_type>
|
27
|
+
</export>
|
28
|
+
|
29
|
+
</package>
|
data/utilrb.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'utilrb/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "utilrb"
|
8
|
+
s.version = Utilrb::VERSION
|
9
|
+
s.authors = ["Sylvain Joyeux"]
|
10
|
+
s.email = "sylvain.joyeux@m4x.org"
|
11
|
+
s.summary = "Utilrb is yet another Ruby toolkit, in the spirit of facets"
|
12
|
+
s.description = "Utilrb is yet another Ruby toolkit, in the spirit of facets. It includes all\nthe standard class extensions I use in other projects."
|
13
|
+
s.homepage = "http://rock-robotics.org"
|
14
|
+
s.licenses = ["BSD"]
|
15
|
+
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.extensions = []
|
18
|
+
s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "History.txt"]
|
19
|
+
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
20
|
+
|
21
|
+
s.add_runtime_dependency "facets", ">= 2.4.0"
|
22
|
+
s.add_runtime_dependency "rake", ">= 0.9"
|
23
|
+
s.add_runtime_dependency "rake-compiler", "~> 0.8.0"
|
24
|
+
s.add_development_dependency "flexmock", ">= 2.0.0"
|
25
|
+
s.add_development_dependency "minitest", ">= 5.0", "~> 5.0"
|
26
|
+
s.add_development_dependency "coveralls"
|
27
|
+
end
|
metadata
CHANGED
@@ -1,141 +1,135 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: utilrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.1.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Joyeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: facets
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 2.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0.9'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.9'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake-compiler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.8.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.8.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: flexmock
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
62
|
-
type: :
|
61
|
+
version: 2.0.0
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 2.0.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - '>='
|
73
|
+
- - ">="
|
81
74
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
-
|
84
|
-
name: flexmock
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '>='
|
75
|
+
version: '5.0'
|
76
|
+
- - "~>"
|
88
77
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0
|
78
|
+
version: '5.0'
|
90
79
|
type: :development
|
91
80
|
prerelease: false
|
92
81
|
version_requirements: !ruby/object:Gem::Requirement
|
93
82
|
requirements:
|
94
|
-
- -
|
83
|
+
- - ">="
|
95
84
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0
|
85
|
+
version: '5.0'
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '5.0'
|
97
89
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
90
|
+
name: coveralls
|
99
91
|
requirement: !ruby/object:Gem::Requirement
|
100
92
|
requirements:
|
101
|
-
- -
|
93
|
+
- - ">="
|
102
94
|
- !ruby/object:Gem::Version
|
103
95
|
version: '0'
|
104
96
|
type: :development
|
105
97
|
prerelease: false
|
106
98
|
version_requirements: !ruby/object:Gem::Requirement
|
107
99
|
requirements:
|
108
|
-
- -
|
100
|
+
- - ">="
|
109
101
|
- !ruby/object:Gem::Version
|
110
102
|
version: '0'
|
111
103
|
description: |-
|
112
104
|
Utilrb is yet another Ruby toolkit, in the spirit of facets. It includes all
|
113
105
|
the standard class extensions I use in other projects.
|
114
|
-
email:
|
115
|
-
- sylvain.joyeux@m4x.org
|
106
|
+
email: sylvain.joyeux@m4x.org
|
116
107
|
executables: []
|
117
|
-
extensions:
|
118
|
-
- ext/utilrb/extconf.rb
|
108
|
+
extensions: []
|
119
109
|
extra_rdoc_files:
|
120
110
|
- History.txt
|
121
111
|
- License.txt
|
122
112
|
- Manifest.txt
|
123
113
|
files:
|
124
|
-
- .
|
114
|
+
- ".boring"
|
115
|
+
- ".gemtest"
|
116
|
+
- ".gitignore"
|
117
|
+
- ".travis.yml"
|
118
|
+
- CMakeLists.txt
|
119
|
+
- Gemfile
|
125
120
|
- History.txt
|
126
121
|
- License.txt
|
122
|
+
- Makefile
|
127
123
|
- Manifest.txt
|
128
|
-
- README.
|
124
|
+
- README.md
|
129
125
|
- Rakefile
|
126
|
+
- benchmarks/validate_options.rb
|
130
127
|
- bm/allocation.rb
|
131
128
|
- bm/speed.rb
|
132
129
|
- ext/utilrb/extconf.rb
|
133
|
-
- ext/utilrb/proc.c
|
134
|
-
- ext/utilrb/readline.c
|
135
130
|
- ext/utilrb/ruby_allocator.hh
|
136
131
|
- ext/utilrb/utilrb.cc
|
137
132
|
- ext/utilrb/value_set.cc
|
138
|
-
- ext/utilrb/weakref.cc
|
139
133
|
- lib/utilrb.rb
|
140
134
|
- lib/utilrb/array.rb
|
141
135
|
- lib/utilrb/array/to_s.rb
|
@@ -180,8 +174,6 @@ files:
|
|
180
174
|
- lib/utilrb/logger/root.rb
|
181
175
|
- lib/utilrb/logger/silent.rb
|
182
176
|
- lib/utilrb/marshal/load_with_missing_constants.rb
|
183
|
-
- lib/utilrb/models/inherited_enumerable.rb
|
184
|
-
- lib/utilrb/models/registration.rb
|
185
177
|
- lib/utilrb/module.rb
|
186
178
|
- lib/utilrb/module/ancestor_p.rb
|
187
179
|
- lib/utilrb/module/attr_enumerable.rb
|
@@ -192,26 +184,26 @@ files:
|
|
192
184
|
- lib/utilrb/module/define_or_reuse.rb
|
193
185
|
- lib/utilrb/module/dsl_attribute.rb
|
194
186
|
- lib/utilrb/module/include.rb
|
195
|
-
- lib/utilrb/module/
|
187
|
+
- lib/utilrb/module/is_singleton.rb
|
188
|
+
- lib/utilrb/module/singleton_class_p.rb
|
196
189
|
- lib/utilrb/object.rb
|
197
190
|
- lib/utilrb/object/address.rb
|
198
191
|
- lib/utilrb/object/attribute.rb
|
199
192
|
- lib/utilrb/object/scoped_eval.rb
|
200
193
|
- lib/utilrb/object/singleton_class.rb
|
201
|
-
- lib/utilrb/objectstats.rb
|
202
194
|
- lib/utilrb/pathname.rb
|
203
195
|
- lib/utilrb/pathname/find_matching_parent.rb
|
204
196
|
- lib/utilrb/pkgconfig.rb
|
205
197
|
- lib/utilrb/qt/mime_data/mime_data.rb
|
206
198
|
- lib/utilrb/qt/variant/from_ruby.rb
|
207
199
|
- lib/utilrb/rake_common.rb
|
208
|
-
- lib/utilrb/ruby_object_graph.rb
|
209
200
|
- lib/utilrb/set.rb
|
210
201
|
- lib/utilrb/set/to_s.rb
|
211
202
|
- lib/utilrb/socket/tcp_server.rb
|
212
203
|
- lib/utilrb/socket/tcp_socket.rb
|
213
204
|
- lib/utilrb/spawn.rb
|
214
205
|
- lib/utilrb/symbol/to_str.rb
|
206
|
+
- lib/utilrb/test.rb
|
215
207
|
- lib/utilrb/thread_pool.rb
|
216
208
|
- lib/utilrb/time.rb
|
217
209
|
- lib/utilrb/time/to_hms.rb
|
@@ -219,80 +211,37 @@ files:
|
|
219
211
|
- lib/utilrb/unbound_method.rb
|
220
212
|
- lib/utilrb/unbound_method/call.rb
|
221
213
|
- lib/utilrb/value_set.rb
|
214
|
+
- lib/utilrb/version.rb
|
222
215
|
- lib/utilrb/weakref.rb
|
223
216
|
- lib/utilrb/yard.rb
|
217
|
+
- lib/yard-utilrb.rb
|
218
|
+
- manifest.xml
|
219
|
+
- package.xml
|
224
220
|
- patches/gc_live_objects.patch
|
225
|
-
-
|
226
|
-
- test/data/test_pkgconfig_empty.pc
|
227
|
-
- test/test_array.rb
|
228
|
-
- test/test_config.rb
|
229
|
-
- test/test_dir.rb
|
230
|
-
- test/test_enumerable.rb
|
231
|
-
- test/test_event_loop.rb
|
232
|
-
- test/test_exception.rb
|
233
|
-
- test/test_gc.rb
|
234
|
-
- test/test_hash.rb
|
235
|
-
- test/test_kernel.rb
|
236
|
-
- test/test_logger.rb
|
237
|
-
- test/test_misc.rb
|
238
|
-
- test/test_models.rb
|
239
|
-
- test/test_module.rb
|
240
|
-
- test/test_object.rb
|
241
|
-
- test/test_objectstats.rb
|
242
|
-
- test/test_pkgconfig.rb
|
243
|
-
- test/test_proc.rb
|
244
|
-
- test/test_set.rb
|
245
|
-
- test/test_thread_pool.rb
|
246
|
-
- test/test_time.rb
|
247
|
-
- test/test_unbound_method.rb
|
248
|
-
- test/test_weakref.rb
|
221
|
+
- utilrb.gemspec
|
249
222
|
homepage: http://rock-robotics.org
|
250
223
|
licenses:
|
251
224
|
- BSD
|
252
225
|
metadata: {}
|
253
226
|
post_install_message:
|
254
|
-
rdoc_options:
|
255
|
-
- --title
|
256
|
-
- TestUtilrb Documentation
|
257
|
-
- --quiet
|
227
|
+
rdoc_options: []
|
258
228
|
require_paths:
|
259
229
|
- lib
|
260
230
|
required_ruby_version: !ruby/object:Gem::Requirement
|
261
231
|
requirements:
|
262
|
-
- -
|
232
|
+
- - ">="
|
263
233
|
- !ruby/object:Gem::Version
|
264
|
-
version: '
|
234
|
+
version: '0'
|
265
235
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
236
|
requirements:
|
267
|
-
- -
|
237
|
+
- - ">"
|
268
238
|
- !ruby/object:Gem::Version
|
269
239
|
version: 1.3.1
|
270
240
|
requirements: []
|
271
241
|
rubyforge_project:
|
272
|
-
rubygems_version: 2.
|
242
|
+
rubygems_version: 2.2.3
|
273
243
|
signing_key:
|
274
244
|
specification_version: 4
|
275
245
|
summary: Utilrb is yet another Ruby toolkit, in the spirit of facets
|
276
|
-
test_files:
|
277
|
-
|
278
|
-
- test/test_gc.rb
|
279
|
-
- test/test_array.rb
|
280
|
-
- test/test_enumerable.rb
|
281
|
-
- test/test_weakref.rb
|
282
|
-
- test/test_config.rb
|
283
|
-
- test/test_event_loop.rb
|
284
|
-
- test/test_unbound_method.rb
|
285
|
-
- test/test_set.rb
|
286
|
-
- test/test_models.rb
|
287
|
-
- test/test_time.rb
|
288
|
-
- test/test_kernel.rb
|
289
|
-
- test/test_proc.rb
|
290
|
-
- test/test_object.rb
|
291
|
-
- test/test_thread_pool.rb
|
292
|
-
- test/test_dir.rb
|
293
|
-
- test/test_hash.rb
|
294
|
-
- test/test_exception.rb
|
295
|
-
- test/test_logger.rb
|
296
|
-
- test/test_misc.rb
|
297
|
-
- test/test_module.rb
|
298
|
-
- test/test_pkgconfig.rb
|
246
|
+
test_files: []
|
247
|
+
has_rdoc:
|
data/ext/utilrb/proc.c
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
#ifdef HAS_RUBY_SOURCE
|
2
|
-
#include <vm_core.h>
|
3
|
-
|
4
|
-
static VALUE env_references(VALUE rbenv)
|
5
|
-
{
|
6
|
-
rb_env_t* env;
|
7
|
-
|
8
|
-
VALUE result = rb_ary_new();
|
9
|
-
GetEnvPtr(rbenv, env);
|
10
|
-
if (env->env)
|
11
|
-
{
|
12
|
-
int i;
|
13
|
-
for (i = 0; i < env->env_size; ++i)
|
14
|
-
rb_ary_push(result, rb_obj_id(env->env[i]));
|
15
|
-
}
|
16
|
-
return result;
|
17
|
-
}
|
18
|
-
|
19
|
-
static VALUE proc_references(VALUE rbproc)
|
20
|
-
{
|
21
|
-
rb_proc_t* proc;
|
22
|
-
GetProcPtr(rbproc, proc);
|
23
|
-
|
24
|
-
if (!NIL_P(proc->envval))
|
25
|
-
return env_references(proc->envval);
|
26
|
-
return rb_ary_new();
|
27
|
-
}
|
28
|
-
#elif RUBY_IS_18
|
29
|
-
#warning "compiling on Ruby 1.8, Proc#references will not be available"
|
30
|
-
#else
|
31
|
-
#warning "Ruby core sources cannot be found, Proc#references will not be available. Install the debugger-ruby_core_source gem to enable"
|
32
|
-
#endif
|
33
|
-
|
34
|
-
void Init_proc()
|
35
|
-
{
|
36
|
-
#ifdef HAS_RUBY_SOURCE
|
37
|
-
rb_define_method(rb_cProc, "references", RUBY_METHOD_FUNC(proc_references), 0);
|
38
|
-
#endif
|
39
|
-
}
|
data/ext/utilrb/readline.c
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
#include <stdio.h>
|
2
|
-
#include <readline/readline.h>
|
3
|
-
#include <ruby.h>
|
4
|
-
|
5
|
-
static VALUE readline_save_prompt(VALUE self)
|
6
|
-
{
|
7
|
-
rl_save_prompt();
|
8
|
-
return Qnil;
|
9
|
-
}
|
10
|
-
|
11
|
-
static VALUE readline_message(VALUE self, VALUE msg)
|
12
|
-
{
|
13
|
-
rl_message("%s", StringValuePtr(msg));
|
14
|
-
rl_redisplay();
|
15
|
-
return Qnil;
|
16
|
-
}
|
17
|
-
|
18
|
-
static VALUE readline_print(VALUE self, VALUE msg)
|
19
|
-
{
|
20
|
-
int need_hack = (rl_readline_state & RL_STATE_READCMD) > 0;
|
21
|
-
char *saved_line;
|
22
|
-
int saved_point;
|
23
|
-
if (need_hack)
|
24
|
-
{
|
25
|
-
saved_point = rl_point;
|
26
|
-
saved_line = rl_copy_text(0, rl_end);
|
27
|
-
rl_save_prompt();
|
28
|
-
rl_replace_line("", 0);
|
29
|
-
rl_redisplay();
|
30
|
-
}
|
31
|
-
|
32
|
-
printf("%s", StringValuePtr(msg));
|
33
|
-
|
34
|
-
if (need_hack)
|
35
|
-
{
|
36
|
-
rl_restore_prompt();
|
37
|
-
rl_replace_line(saved_line, 0);
|
38
|
-
rl_point = saved_point;
|
39
|
-
rl_redisplay();
|
40
|
-
free(saved_line);
|
41
|
-
}
|
42
|
-
return Qnil;
|
43
|
-
}
|
44
|
-
|
45
|
-
extern void Init_utilrb_readline()
|
46
|
-
{
|
47
|
-
VALUE mReadline = rb_define_module("Readline");
|
48
|
-
rb_define_singleton_method(mReadline, "save_prompt", readline_save_prompt, 0);
|
49
|
-
rb_define_singleton_method(mReadline, "message", readline_message, 1);
|
50
|
-
rb_define_singleton_method(mReadline, "print", readline_print, 1);
|
51
|
-
}
|
52
|
-
|
data/ext/utilrb/weakref.cc
DELETED
@@ -1,143 +0,0 @@
|
|
1
|
-
#include <set>
|
2
|
-
#include <map>
|
3
|
-
#include <ruby.h>
|
4
|
-
#ifdef RUBY_IS_18
|
5
|
-
#include <intern.h>
|
6
|
-
#else
|
7
|
-
#include <ruby/intern.h>
|
8
|
-
#endif
|
9
|
-
|
10
|
-
using std::set;
|
11
|
-
using std::map;
|
12
|
-
|
13
|
-
static VALUE cWeakRef;
|
14
|
-
static VALUE cRefError;
|
15
|
-
|
16
|
-
/* Weakref internal structure. +obj+ is Qnil before initialization and Qundef
|
17
|
-
* after finalization */
|
18
|
-
struct WeakRef {
|
19
|
-
VALUE ruby_ref;
|
20
|
-
VALUE obj;
|
21
|
-
};
|
22
|
-
|
23
|
-
// Map from real objects to the set of associated WeakRef objects
|
24
|
-
typedef set<VALUE> ObjSet;
|
25
|
-
typedef map< VALUE, ObjSet > RefFromObjID;
|
26
|
-
typedef map< VALUE, VALUE > ObjFromRefID;
|
27
|
-
RefFromObjID from_obj_id;
|
28
|
-
ObjFromRefID from_ref_id;
|
29
|
-
|
30
|
-
static void weakref_free(WeakRef const* ref)
|
31
|
-
{
|
32
|
-
VALUE ref_id = rb_obj_id(ref->ruby_ref);
|
33
|
-
ObjFromRefID::iterator obj_it = from_ref_id.find(ref_id);
|
34
|
-
if (obj_it != from_ref_id.end())
|
35
|
-
{
|
36
|
-
VALUE obj_id = rb_obj_id(obj_it->second);
|
37
|
-
RefFromObjID::iterator ref_set = from_obj_id.find(obj_id);
|
38
|
-
ref_set->second.erase(ref->ruby_ref);
|
39
|
-
from_ref_id.erase(obj_it);
|
40
|
-
}
|
41
|
-
delete ref;
|
42
|
-
}
|
43
|
-
static VALUE weakref_alloc(VALUE klass)
|
44
|
-
{
|
45
|
-
WeakRef* ref = new WeakRef;
|
46
|
-
ref->obj = Qnil;
|
47
|
-
ref->ruby_ref = Data_Wrap_Struct(klass, NULL, weakref_free, ref);
|
48
|
-
return ref->ruby_ref;
|
49
|
-
}
|
50
|
-
|
51
|
-
static WeakRef& get_weakref(VALUE self)
|
52
|
-
{
|
53
|
-
WeakRef* object = 0;
|
54
|
-
Data_Get_Struct(self, WeakRef, object);
|
55
|
-
return *object;
|
56
|
-
}
|
57
|
-
|
58
|
-
static VALUE do_object_finalize(VALUE mod, VALUE obj_id)
|
59
|
-
{
|
60
|
-
RefFromObjID::iterator ref_set = from_obj_id.find(obj_id);
|
61
|
-
if (ref_set != from_obj_id.end())
|
62
|
-
{
|
63
|
-
ObjSet::iterator it = ref_set->second.begin();
|
64
|
-
ObjSet::iterator const end = ref_set->second.end();
|
65
|
-
for (; it != end; ++it)
|
66
|
-
{
|
67
|
-
// Do NOT use Data_Wrap_Struct here, it would break on recent Ruby
|
68
|
-
// interpreters. The reason is that the object type is reset during
|
69
|
-
// GC -- and the call to free functions is deferred.
|
70
|
-
//
|
71
|
-
// So, at this point, we're sure we have a RDATA in *it (otherwise
|
72
|
-
// weakref_free would have been called), but we can't use
|
73
|
-
// Data_Wrap_Struct because that would crash.
|
74
|
-
WeakRef& ref = *reinterpret_cast<WeakRef*>(RDATA(*it)->data);;
|
75
|
-
ref.obj = Qundef;
|
76
|
-
from_ref_id.erase(rb_obj_id(*it));
|
77
|
-
}
|
78
|
-
from_obj_id.erase(obj_id);
|
79
|
-
}
|
80
|
-
return Qnil;
|
81
|
-
}
|
82
|
-
|
83
|
-
// Note: the Ruby code has already registered +do_object_finalize+ as the
|
84
|
-
// finalizer for +obj+.
|
85
|
-
//
|
86
|
-
// It is forbidden to make a weakref-of-weakref or a weakref of an immediate
|
87
|
-
// object
|
88
|
-
static VALUE weakref_do_initialize(VALUE self, VALUE obj)
|
89
|
-
{
|
90
|
-
if (!FL_ABLE(obj))
|
91
|
-
{
|
92
|
-
VALUE str = rb_any_to_s(obj);
|
93
|
-
rb_raise(rb_eArgError, "%s cannot be finalized", StringValuePtr(str));
|
94
|
-
}
|
95
|
-
|
96
|
-
WeakRef& ref = get_weakref(self);
|
97
|
-
ref.obj = obj;
|
98
|
-
|
99
|
-
RefFromObjID::iterator it = from_obj_id.find(rb_obj_id(obj));
|
100
|
-
if (it == from_obj_id.end())
|
101
|
-
it = from_obj_id.insert( make_pair(rb_obj_id(obj), ObjSet()) ).first;
|
102
|
-
|
103
|
-
it->second.insert(self);
|
104
|
-
from_ref_id.insert( std::make_pair(rb_obj_id(self), obj) );
|
105
|
-
|
106
|
-
return Qnil;
|
107
|
-
}
|
108
|
-
|
109
|
-
static VALUE weakref_get(VALUE self)
|
110
|
-
{
|
111
|
-
WeakRef const& ref = get_weakref(self);
|
112
|
-
|
113
|
-
if (ref.obj == Qnil)
|
114
|
-
rb_raise(cRefError, "initialized weakref");
|
115
|
-
if (ref.obj == Qundef)
|
116
|
-
rb_raise(cRefError, "finalized object");
|
117
|
-
return ref.obj;
|
118
|
-
}
|
119
|
-
|
120
|
-
static VALUE refcount(VALUE mod, VALUE obj)
|
121
|
-
{
|
122
|
-
if (0 == (obj & FIXNUM_FLAG))
|
123
|
-
obj = rb_obj_id(obj);
|
124
|
-
|
125
|
-
RefFromObjID::const_iterator it = from_obj_id.find(obj);
|
126
|
-
if (it == from_obj_id.end())
|
127
|
-
return Qnil;
|
128
|
-
else
|
129
|
-
return INT2FIX(it->second.size());
|
130
|
-
}
|
131
|
-
|
132
|
-
extern "C" void Init_weakref(VALUE mUtilrb)
|
133
|
-
{
|
134
|
-
cWeakRef = rb_define_class_under(mUtilrb, "WeakRef", rb_cObject);
|
135
|
-
cRefError = rb_define_class_under(cWeakRef, "RefError", rb_eStandardError);
|
136
|
-
rb_define_alloc_func(cWeakRef, weakref_alloc);
|
137
|
-
|
138
|
-
rb_define_singleton_method(cWeakRef, "do_object_finalize", RUBY_METHOD_FUNC(do_object_finalize), 1);
|
139
|
-
rb_define_singleton_method(cWeakRef, "refcount", RUBY_METHOD_FUNC(refcount), 1);
|
140
|
-
rb_define_method(cWeakRef, "do_initialize", RUBY_METHOD_FUNC(weakref_do_initialize), 1);
|
141
|
-
rb_define_method(cWeakRef, "get", RUBY_METHOD_FUNC(weakref_get), 0);
|
142
|
-
}
|
143
|
-
|