archipelago_rbtree 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog ADDED
@@ -0,0 +1,421 @@
1
+ 2007-02-01 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
2
+
3
+ * version 0.2.0 released.
4
+
5
+ 2007-01-25 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
6
+
7
+ * rbtree.c (rbtree_readjust): remove a warning.
8
+
9
+ * rbtree.c (rbtree_default): should not call default procedure if
10
+ no key is given.
11
+
12
+ * rbtree.c (rbtree_equal): returns true if two rbtrees have same
13
+ set of key-value set.
14
+
15
+ 2004-10-27 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
16
+
17
+ * version 0.1.3 released.
18
+
19
+ 2004-07-29 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
20
+
21
+ * rbtree.c (rbtree_bound): RBTree#bound(lower, upper = lower).
22
+
23
+ 2004-07-11 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
24
+
25
+ * rbtree.c (MultiRBTree): new class. MultiRBTree allows duplicates
26
+ of keys.
27
+
28
+ * rbtree.c (rbtree_dump, rbtree_s_load): use Array as a storage
29
+ for performance improvement.
30
+
31
+ * rbtree.c (rbtree_equal, rbtree_initialize_copy, rbtree_update):
32
+ should use rb_obj_is_kind_of.
33
+
34
+ * rbtree.c (iter_lev): added to count iterator level for nesting
35
+ and thread-safety.
36
+
37
+ 2004-06-29 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
38
+
39
+ * dict.c: remove codes Ruby/RBTree doesn't need. now not supposed
40
+ to use dict.c with other program.
41
+
42
+ * dict.h: ditto.
43
+
44
+ * dict.c (dict_equal): remove key_eql argument. use
45
+ dict->dict_compare to compare keys.
46
+
47
+ 2004-06-20 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
48
+
49
+ * rbtree.c (rbtree_cmp): use rb_str_cmp if the type of keys is
50
+ string.
51
+
52
+ * rbtree.c (rbtree_cmp): use rb_cmpint.
53
+
54
+ * rbtree.c (rbtree_user_cmp): ditto.
55
+
56
+ 2004-06-12 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
57
+
58
+ * version 0.1.2 release.
59
+
60
+ 2004-05-31 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
61
+
62
+ * rbtree.c (rbtree_initialize_copy): if an exception is raised in
63
+ the method rbtree is not modified.
64
+
65
+ * rbtree.c (rbtree_delete_if): if an exception is raised in the
66
+ block rbtree is not modified(no keys are deleted).
67
+
68
+ * rbtree.c (rbtree_readjust): use rb_gc_force_recycle.
69
+
70
+ 2004-05-24 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
71
+
72
+ * rbtree.c (rbtree_initialize_copy): use aset_i. duplicating a key
73
+ of string is fast because of copy-on-write.
74
+
75
+ * rbtree.c (rbtree_readjust): ditto.
76
+
77
+ * rbtree.c (rbtree_update): ditto.
78
+
79
+ * rbtree.c (rbtree_aset): no dict_lookup for better performance.
80
+
81
+ * rbtree.c (rbtree_update): was same whether a block is given or not.
82
+
83
+ 2004-05-23 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
84
+
85
+ * rbtree.c (inspect_rbtree): add OBJ_INFECTs.
86
+
87
+ * rbtree.c (inspect_rbtree): change ``compare'' to ``cmp_proc''.
88
+
89
+ * rbtree.c (pp_block): ditto.
90
+
91
+ 2004-04-26 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
92
+
93
+ * rbtree.c (rbtree_s_create): accept Hash argument.
94
+
95
+ * rbtree.c (rbtree_s_create): should just copy keys and values.
96
+
97
+ 2004-02-19 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
98
+
99
+ * rbtree.c (pp_object_group): use id_object_group.
100
+
101
+ 2004-02-16 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
102
+
103
+ * version 0.1.1 release.
104
+
105
+ 2004-02-13 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
106
+
107
+ * README: rewritten.
108
+
109
+ * rbtree.c (document): incomplete document for rdoc.
110
+
111
+ 2004-02-08 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
112
+
113
+ * test.rb (test_pp): add pretty printing test.
114
+
115
+ 2004-02-07 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
116
+
117
+ * rbtree.c (rbtree_mark): should check rbtree and dict is
118
+ initialized. Thanks to Neil Spring.
119
+
120
+ 2004-02-05 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
121
+
122
+ * rbtree.c (prettyprint): polish code.
123
+
124
+ * test.rb (assert_raise): alias of assert_raises for Ruby 1.6.x.
125
+
126
+ 2004-02-02 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
127
+
128
+ * test.rb: clean code. no more RUnit support. use Test::Unit.
129
+
130
+ 2004-01-29 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
131
+
132
+ * rbtree.c (rbtree_dump): optimization.
133
+
134
+ * rbtree.c (rbtree_s_load): ditto.
135
+
136
+ 2004-01-27 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
137
+
138
+ * rbtree.c (readjust): RBTree#readjust() just readjusts elements
139
+ using current comparison block. use RBTree#readjust(nil) to set
140
+ default comparison block.
141
+
142
+ * extconf.rb (assertion): removed.
143
+
144
+ 2004-01-14 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
145
+
146
+ * ctest/test.c: removed.
147
+
148
+ * ctest/testlib.c: ditto.
149
+
150
+ * ctest/testlib.h: ditto.
151
+
152
+ * ctest/Makefile: ditto.
153
+
154
+ 2004-01-04 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
155
+
156
+ * version 0.1.0 release.
157
+
158
+ 2004-01-03 OZAWA Takuma <burningdowntheopera@yahoo.co.jp>
159
+
160
+ * rbtree.c (rbtree_to_rbtree): new method.
161
+
162
+ * rbtree.c (each_pair_i, rbtree_bound_body, rbtree_delete_if_body,
163
+ select_i, update_block_i): use rb_yield_values.
164
+
165
+ * rbtree.c (rbtree_each): RBTree#each should yield single value.
166
+
167
+ * rbtree.c (rbtree_select): select(key..) is removed.
168
+
169
+ * rbtree.c (rbtree_fetch): always warn if default argument and a
170
+ block are supplied at the same time.
171
+
172
+ 2003-08-12 takuma ozawa <hermione@24i.net>
173
+
174
+ * version 0.0.7 release.
175
+
176
+ 2003-08-11 takuma ozawa <hermione@24i.net>
177
+
178
+ * rbtree.c (rbtree_to_hash): copy default value.
179
+
180
+ * rbtree.c (rbtree_readjust): takes a Proc argument.
181
+
182
+ * rbtree.c (to_hash_i): optimization.
183
+
184
+ 2003-08-09 takuma ozawa <hermione@24i.net>
185
+
186
+ * rbtree.c (rbtree_merge): new method.
187
+
188
+ * rbtree.c (rbtree_select): select(key..) is deprecated.
189
+
190
+ * rbtree.c (rbtree_values_at): new method.
191
+
192
+ * rbtree.c (rbtree_initialized_copy): rbtree_copy_object changed to.
193
+
194
+ 2003-07-27 takuma ozawa <hermione@24i.net>
195
+
196
+ * rbtree.c (rbtree_dump): new method based on Ara Howard's code.
197
+ Thanks.
198
+
199
+ * rbtree.c (rbtree_s_load): ditto.
200
+
201
+ 2003-03-25 takuma ozawa <hermione@24i.net>
202
+
203
+ * version 0.0.6 release.
204
+
205
+ 2003-02-26 takuma ozawa <hermione@24i.net>
206
+
207
+ * rbtree.c (rbtree_readjust): rbtree_modify.
208
+
209
+ 2003-02-23 takuma ozawa <hermione@24i.net>
210
+
211
+ * rbtree.c (rbtree_copy_object): use copy_i.
212
+
213
+ * rbtree.c (rbtree_readjust): ditto.
214
+
215
+ * rbtree.c (rbtree_aset): not freeze a key.
216
+
217
+ 2003-01-24 takuma ozawa <hermione@24i.net>
218
+
219
+ * rbtree.c (rbtree_aset): optimization.
220
+
221
+ 2003-01-18 takuma ozawa <hermione@24i.net>
222
+
223
+ * rbtree.c (rbtree_aset): not raise an exception if a dict is
224
+ full and the key has been contained.
225
+
226
+ 2003-01-16 takuma ozawa <hermione@24i.net>
227
+
228
+ * version 0.0.5 release.
229
+
230
+ 2002-12-26 takuma ozawa <hermione@24i.net>
231
+
232
+ * rbtree.c (rbtree_alloc): new allocation framework.
233
+
234
+ * rbtree.c (rbtree_copy_object): changed become to copy_object.
235
+
236
+ * rbtree.c (rbtree_cmp): use NUM2INT in case nil returned.
237
+
238
+ * extconf.rb (assertion): assertion is off by default.
239
+
240
+ * rbtree.c (rbtree_aset): fixed a memory leak occured if the
241
+ comparison block raises an exception.
242
+
243
+ 2002-11-24 takuma ozawa <hermione@24i.net>
244
+
245
+ * rbtree.c (rbtree_pretty_print): new method.
246
+
247
+ * rbtree.c (rbtree_pretty_print_cycle): new method.
248
+
249
+ 2002-11-22 takuma ozawa <hermione@24i.net>
250
+
251
+ * rbtree.c (rbtree_inspect): format changed.
252
+
253
+ * rbtree.c (rbtree_user_cmp): use NUM2INT.
254
+
255
+ 2002-10-29 takuma ozawa <hermione@24i.net>
256
+
257
+ * version 0.0.4 release.
258
+
259
+ 2002-10-18 takuma ozawa <hermione@24i.net>
260
+
261
+ * extconf.rb (assertion): change name to assertion.
262
+
263
+ 2002-10-12 takuma ozawa <hermione@24i.net>
264
+
265
+ * rbtree.c (rbtree_readjust): assign Qnil to other's dict_context
266
+ after swap.
267
+
268
+ * rbtree.c (rbtree_bound): use dict_compare for range check.
269
+
270
+ 2002-10-10 takuma ozawa <hermione@24i.net>
271
+
272
+ * rbtree.c (rbtree_readjust): empty dict check.
273
+
274
+ * rbtree.c (rbtree_readjust): not use dict_readjust for better
275
+ readability.
276
+
277
+ * rbtree.c (rbtree_become): must copy dict_compare and
278
+ dict_context before copying nodes.
279
+
280
+ * rbtree.c (rbtree_delete_if): rbtree_modify.
281
+
282
+ * rbtree.c (rbtree_shift_pop): ditto.
283
+
284
+ * rbtree.c (rbtree_update): ditto.
285
+
286
+ * test.rb: Test::Unit.
287
+
288
+ * rbtree.c (rbtree_readjust): clear other's nodes after swap.
289
+
290
+ * rbtree.c (rbtree_readjust): assign Qnil to other's ifnone after
291
+ swap.
292
+
293
+ 2002-10-07 takuma ozawa <hermione@24i.net>
294
+
295
+ * rbtree.c (rbtree_update): self assignment check.
296
+
297
+ * rbtree.c (rbtree_update): replace duplicate value by return
298
+ value of block if given.
299
+
300
+ 2002-10-03 takuma ozawa <hermione@24i.net>
301
+
302
+ * rbtree.c (rbtree_become): self assignment check.
303
+
304
+ 2002-09-24 takuma ozawa <hermione@24i.net>
305
+
306
+ * rbtree.c (rbtree_cmp_proc): new method.
307
+
308
+ * rbtree.c (rbtree_readjust): if no block given, must assign Qnil
309
+ to context.
310
+
311
+ * rbtree.c (rbtree_inspect): format changed.
312
+
313
+ 2002-09-23 takuma ozawa <hermione@24i.net>
314
+
315
+ * dict.c (dict_equal): empty test must be after similar test.
316
+
317
+ 2002-09-22 takuma ozawa <hermione@24i.net>
318
+
319
+ * rbtree.c (rbtree_update): convert argument to RBTree.
320
+
321
+ * rbtree.c (rbtree_become): ditto.
322
+
323
+ * rbtree.c (rbtree_eq): use rb_equal.
324
+
325
+ * rbtree.c (rbtree_eql): change name to rbtree_eq.
326
+
327
+ 2002-09-20 takuma ozawa <hermione@24i.net>
328
+
329
+ * rbtree.c (RBTREE_FL_COPY): removed.
330
+
331
+ * ctest/test.c: rewritten in C. CppUnit is not required.
332
+
333
+ 2002-09-18 takuma ozawa <hermione@24i.net>
334
+
335
+ * depend: new file.
336
+
337
+ * rbtree.c (rbtree_equal): no need to check RBTREE_PROC_DEFAULT.
338
+
339
+ * extconf.rb (inline) check for inline keyword.
340
+
341
+ 2002-09-17 takuma ozawa <hermione@24i.net>
342
+
343
+ * version 0.0.3 release.
344
+
345
+ 2002-09-16 takuma ozawa <hermione@24i.net>
346
+
347
+ * rbtree.c (rbtree_reverse_each): new method.
348
+
349
+ 2002-09-12 takuma ozawa <hermione@24i.net>
350
+
351
+ * rbtree.c (rbtree_s_create): unset RBTREE_PROC_DEFAULT if the
352
+ argument is RBTree.
353
+
354
+ * rbtree.c (rbtree_clone): use rbtree_become.
355
+
356
+ * rbtree.c (version.h): not included.
357
+
358
+ 2002-09-11 takuma ozawa <hermione@24i.net>
359
+
360
+ * rbtree.c (rbtree_to_a): use OBJ_INFECT.
361
+
362
+ * rbtree.c (rbtree_to_hash): ditto.
363
+
364
+ * rbtree.c (rbtree_become): replaced by rbtree_replace.
365
+
366
+ * rbtree.c (rbtree_replace): removed. replace is implemented
367
+ useing rbtree_become.
368
+
369
+ * rbtree.c (rbtree_first_last): first or pop from empty tree
370
+ should not return its default proc.
371
+
372
+ 2002-09-09 takuma ozawa <hermione@24i.net>
373
+
374
+ * rbtree.c (rbtree_become): new method.
375
+
376
+ * rbtree.c (rbtree_clone): unset RBTREE_IN_ITERATION.
377
+
378
+ * rbtree.c (rbtree_replace): should copy ifnone.
379
+
380
+ * rbtree.c (rbtree_shift_pop): shift or pop from empty tree should
381
+ not return its default proc.
382
+
383
+ * rbtree.c (rbtree_default_proc): new method.
384
+
385
+ * rbtree.c (rbtree_equal): should check default values and
386
+ RBTREE_PROC_DEFAULT.
387
+
388
+ 2002-07-19 takuma ozawa <metal@mine.ne.jp>
389
+
390
+ * dict.c (alloc_node): must return NULL if a memory allocation
391
+ fails.
392
+
393
+ 2002-07-13 takuma ozawa <metal@mine.ne.jp>
394
+
395
+ * version 0.0.2 release.
396
+
397
+ 2002-07-11 takuma ozawa <metal@mine.ne.jp>
398
+
399
+ * rbtree.c (rbtree_readjust): new method.
400
+
401
+ 2002-07-10 takuma ozawa <metal@mine.ne.jp>
402
+
403
+ * dict.c (dict_clone): clone object must copy must_unfreeze
404
+ variable.
405
+
406
+ 2002-06-25 takuma ozawa <metal@mine.ne.jp>
407
+
408
+ * dict.h (dnode_t): add must_freeze flag not to unfreeze already
409
+ freezed object.
410
+
411
+ 2002-06-22 takuma ozawa <metal@mine.ne.jp>
412
+
413
+ * rbtree.c (rbtree_first): new method.
414
+
415
+ * rbtree.c (rbtree_last): new method.
416
+
417
+ * rbtree.c (rbtree_pop): new method.
418
+
419
+ 2002-06-14 takuma ozawa <metal@mine.ne.jp>
420
+
421
+ * initial release.
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2002-2004, 2007 OZAWA Takuma
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/Makefile ADDED
@@ -0,0 +1,153 @@
1
+
2
+ SHELL = /bin/sh
3
+
4
+ #### Start of system configuration section. ####
5
+
6
+ srcdir = ext
7
+ topdir = /opt/local/lib/ruby/1.8/i686-darwin8.9.1
8
+ hdrdir = $(topdir)
9
+ VPATH = $(srcdir):$(topdir):$(hdrdir)
10
+ prefix = $(DESTDIR)/opt/local
11
+ exec_prefix = $(DESTDIR)/opt/local
12
+ sitedir = $(prefix)/lib/ruby/site_ruby
13
+ rubylibdir = $(libdir)/ruby/$(ruby_version)
14
+ docdir = $(datarootdir)/doc/$(PACKAGE)
15
+ dvidir = $(docdir)
16
+ datarootdir = $(prefix)/share
17
+ archdir = $(rubylibdir)/$(arch)
18
+ sbindir = $(exec_prefix)/sbin
19
+ psdir = $(docdir)
20
+ vendordir = $(prefix)/lib/ruby/vendor_ruby
21
+ localedir = $(datarootdir)/locale
22
+ htmldir = $(docdir)
23
+ datadir = $(datarootdir)
24
+ includedir = $(prefix)/include
25
+ infodir = $(datarootdir)/info
26
+ sysconfdir = $(prefix)/etc
27
+ mandir = $(DESTDIR)/opt/local/share/man
28
+ libdir = $(DESTDIR)/opt/local/lib
29
+ sharedstatedir = $(prefix)/com
30
+ oldincludedir = $(DESTDIR)/usr/include
31
+ pdfdir = $(docdir)
32
+ sitearchdir = $(sitelibdir)/$(sitearch)
33
+ vendorarchdir = $(vendorlibdir)/$(vendorarch)
34
+ bindir = $(exec_prefix)/bin
35
+ localstatedir = $(prefix)/var
36
+ vendorlibdir = $(vendordir)/$(ruby_version)
37
+ sitelibdir = $(sitedir)/$(ruby_version)
38
+ libexecdir = $(exec_prefix)/libexec
39
+
40
+ CC = gcc
41
+ LIBRUBY = $(LIBRUBY_SO)
42
+ LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
43
+ LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
44
+ LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
45
+
46
+ RUBY_EXTCONF_H =
47
+ CFLAGS = -fno-common -O2 -fno-common -pipe -fno-common -std=c89 -pedantic -Wall -Wno-long-long
48
+ INCFLAGS = -I. -I. -I/opt/local/lib/ruby/1.8/i686-darwin8.9.1 -Iext
49
+ CPPFLAGS = -DNDEBUG -DHAVE_OBJECT_ALLOCATE -DHAVE_RB_OBJ_INIT_COPY -DHAVE_RB_BLOCK_PROC -DHAVE_RB_YIELD_VALUES -DHAVE_RB_MARSHAL_DUMP -DHAVE_RB_MARSHAL_LOAD -Dinline=__inline -I/opt/local/include
50
+ CXXFLAGS = $(CFLAGS)
51
+ DLDFLAGS = -L/opt/local/lib
52
+ LDSHARED = cc -dynamic -bundle -undefined suppress -flat_namespace
53
+ AR = ar
54
+ EXEEXT =
55
+
56
+ RUBY_INSTALL_NAME = ruby
57
+ RUBY_SO_NAME = ruby
58
+ arch = i686-darwin8.9.1
59
+ sitearch = i686-darwin8.9.1
60
+ vendorarch = i686-darwin8.9.1
61
+ ruby_version = 1.8
62
+ ruby = /opt/local/bin/ruby
63
+ RUBY = $(ruby)
64
+ RM = rm -f
65
+ MAKEDIRS = mkdir -p
66
+ INSTALL = /usr/bin/install -c
67
+ INSTALL_PROG = $(INSTALL) -m 0755
68
+ INSTALL_DATA = $(INSTALL) -m 644
69
+ COPY = cp
70
+
71
+ #### End of system configuration section. ####
72
+
73
+ preload =
74
+
75
+ libpath = $(libdir)
76
+ LIBPATH = -L"$(libdir)"
77
+ DEFFILE =
78
+
79
+ CLEANFILES =
80
+ DISTCLEANFILES =
81
+
82
+ extout =
83
+ extout_prefix =
84
+ target_prefix =
85
+ LOCAL_LIBS =
86
+ LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl -lobjc
87
+ SRCS = archipelago_rbtree.c dict.c
88
+ OBJS = archipelago_rbtree.o dict.o
89
+ TARGET = archipelago_rbtree
90
+ DLLIB = $(TARGET).bundle
91
+ EXTSTATIC =
92
+ STATIC_LIB =
93
+
94
+ RUBYCOMMONDIR = $(sitedir)$(target_prefix)
95
+ RUBYLIBDIR = $(sitelibdir)$(target_prefix)
96
+ RUBYARCHDIR = $(sitearchdir)$(target_prefix)
97
+
98
+ TARGET_SO = $(DLLIB)
99
+ CLEANLIBS = $(TARGET).bundle $(TARGET).il? $(TARGET).tds $(TARGET).map
100
+ CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
101
+
102
+ all: $(DLLIB)
103
+ static: $(STATIC_LIB)
104
+
105
+ clean:
106
+ @-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
107
+
108
+ distclean: clean
109
+ @-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
110
+ @-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
111
+
112
+ realclean: distclean
113
+ install: install-so install-rb
114
+
115
+ install-so: $(RUBYARCHDIR)
116
+ install-so: $(RUBYARCHDIR)/$(DLLIB)
117
+ $(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
118
+ $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
119
+ install-rb: pre-install-rb install-rb-default
120
+ install-rb-default: pre-install-rb-default
121
+ pre-install-rb: Makefile
122
+ pre-install-rb-default: Makefile
123
+ $(RUBYARCHDIR):
124
+ $(MAKEDIRS) $@
125
+
126
+ site-install: site-install-so site-install-rb
127
+ site-install-so: install-so
128
+ site-install-rb: install-rb
129
+
130
+ .SUFFIXES: .c .m .cc .cxx .cpp .C .o
131
+
132
+ .cc.o:
133
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
134
+
135
+ .cxx.o:
136
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
137
+
138
+ .cpp.o:
139
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
140
+
141
+ .C.o:
142
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
143
+
144
+ .c.o:
145
+ $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<
146
+
147
+ $(DLLIB): $(OBJS)
148
+ @-$(RM) $@
149
+ $(LDSHARED) $(DLDFLAGS) $(LIBPATH) -o $@ $(OBJS) $(LOCAL_LIBS) $(LIBS)
150
+
151
+
152
+
153
+ $(OBJS): ruby.h defines.h
data/README ADDED
@@ -0,0 +1,82 @@
1
+ =begin
2
+
3
+ = Gemification
4
+
5
+ To simplify my usage of this nice package, and managing my patches to
6
+ it, I have added it to this repository and added a Rakefile to create
7
+ a gem for it. Install it like any gem, basically.
8
+
9
+ //Martin Kihlgren <martin at troja dot ath dot cx>
10
+
11
+ = Ruby/RBTree
12
+
13
+ RBTree is a sorted associative collection using Red-Black Tree as
14
+ the internal data structure. The elements of RBTree are ordered and
15
+ the interface is the almost same as Hash, so simply you can
16
+ consider RBTree sorted Hash.
17
+
18
+ Red-Black Tree is a kind of binary tree that automatically balances
19
+ by itself when a node is inserted or deleted. Thus the complexity
20
+ for insert, search and delete is O(log N) in expected and worst
21
+ case. On the other hand the complexity of Hash is O(1). Because
22
+ Hash is unordered the data structure is more effective than
23
+ Red-Black Tree as an associative collection.
24
+
25
+ The interface of RBTree is the almost same as Hash although there
26
+ are some limitations.
27
+
28
+ * While iterating (e.g. in RBTree#each block), RBTree is
29
+ unmodifiable.
30
+
31
+ * Comparison is done using <=> method of key objects. So all types
32
+ of keys in RBTree should be comparable each other or an arbitrary
33
+ Proc might be set by RBTree#readjust.
34
+
35
+ RBTree has a few searching methods that Hash doesn't have. They are
36
+ RBTree#lower_bound, RBTree#upper_bound and RBTree#bound. See document
37
+ of each method for details.
38
+
39
+ Pretty printing is available for RBTree by using pp.rb. The output
40
+ of pp is easier than p to read. Just call Kernel#pp for the object.
41
+
42
+ MultiRBTree that allows duplicates of keys is also available.
43
+
44
+ == Download
45
+
46
+ * ((<"Ruby/RBTree 0.2.0"|URL:rbtree-0.2.0.tar.gz>))
47
+
48
+ == Requirement
49
+
50
+ * Ruby 1.6.7 or higher
51
+
52
+ == Install
53
+
54
+ $ tar xzf rbtree-x.x.x.tar.gz
55
+ $ cd rbtree-x.x.x.tar.gz
56
+ $ ruby extconf.rb
57
+ $ make
58
+ $ make site-install
59
+
60
+ == Test
61
+
62
+ $ ruby test.rb
63
+
64
+ == Incomplete Document
65
+
66
+ $ rdoc rbtree.c
67
+
68
+ == License
69
+
70
+ MIT License. Copyright (c) 2002-2004, 2007 OZAWA Takuma.
71
+
72
+ dict.c and dict.h are modified copies that are originally in Kazlib
73
+ written by Kaz Kylheku. Copyright is held by Kaz Kylheku, see dict.c
74
+ and dict.h for the license. The web page of Kazlib is at
75
+ ((<URL:http://users.footprints.net/~kaz/kazlib.html>)).
76
+
77
+ == Support
78
+
79
+ Bug fixes, suggestions and other feedbacks are welcomed. Please mail
80
+ me at ((<burningdowntheopera@yahoo.co.jp|URL:mailto:burningdowntheopera@yahoo.co.jp>)).
81
+
82
+ =end