rbtree3 0.7.0 → 1.0.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.
- checksums.yaml +4 -4
- data/ChangeLog +12 -0
- data/rbtree.c +8 -12
- data/test.rb +19 -16
- metadata +3 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8d27d1e7a32ef3f88ddf0e3a4e6feed5d2fc8df02fd39d1d353c51a91d4f6ad2
|
|
4
|
+
data.tar.gz: 548f44e98a342c617f37ce6775a7686915fbd66a4e76e5bca401969910f16311
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 485f44e9c906d98c69f8fa197b7cdf59250d697ad2b7a844fd76d3aeb6128eb868b6b1bf38116136e2ad28cfc2b91d92d07d5b8c308ea988155b1a0f9cf650c4
|
|
7
|
+
data.tar.gz: a757b1c167d12842f8ed3d609d791004fe534c15789ddd3d1b769984885c6400baf86bdd07bf7c4eb0771e209fe113c14eb34e6dc6095b2c31249d6cfa6b7885
|
data/ChangeLog
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
2026-03-24 Hiroshi SHIBATA, Kyrylo Silin
|
|
2
|
+
|
|
3
|
+
* version 1.0.0 released.
|
|
4
|
+
|
|
5
|
+
* added support for Ruby 4.1
|
|
6
|
+
|
|
7
|
+
2023-04-20 Tsimnuj Hawj
|
|
8
|
+
|
|
9
|
+
* version 0.7.1 released.
|
|
10
|
+
|
|
11
|
+
* rbtree.c: (rbtree_cmp): compilation fixes for Apple M1 chips (and newer)
|
|
12
|
+
|
|
1
13
|
2022-01-10 Kyrylo Silin
|
|
2
14
|
|
|
3
15
|
* version 0.7.0 released.
|
data/rbtree.c
CHANGED
|
@@ -122,7 +122,7 @@ static int
|
|
|
122
122
|
rbtree_cmp(const void* key1, const void* key2, void* context)
|
|
123
123
|
{
|
|
124
124
|
VALUE ret;
|
|
125
|
-
if (TYPE(key1) == T_STRING && TYPE(key2) == T_STRING)
|
|
125
|
+
if (TYPE((VALUE)key1) == T_STRING && TYPE((VALUE)key2) == T_STRING)
|
|
126
126
|
return rb_str_cmp((VALUE)key1, (VALUE)key2);
|
|
127
127
|
ret = rb_funcall((VALUE)key1, id_cmp, 1, (VALUE)key2);
|
|
128
128
|
return cmpint(ret, (VALUE)key1, (VALUE)key2);
|
|
@@ -301,7 +301,7 @@ insert_node_ensure(VALUE arg_)
|
|
|
301
301
|
dict->dict_freenode(node, dict->dict_context);
|
|
302
302
|
break;
|
|
303
303
|
case NODE_NOT_FOUND:
|
|
304
|
-
if (TYPE(arg->key) == T_STRING)
|
|
304
|
+
if (TYPE((VALUE)arg->key) == T_STRING)
|
|
305
305
|
node->dict_key = TO_KEY(rb_str_new4(GET_KEY(node)));
|
|
306
306
|
break;
|
|
307
307
|
case NODE_FOUND:
|
|
@@ -377,7 +377,7 @@ rbtree_fetch(int argc, VALUE* argv, VALUE self)
|
|
|
377
377
|
rbtree_argc_error();
|
|
378
378
|
block_given = rb_block_given_p();
|
|
379
379
|
if (block_given && argc == 2)
|
|
380
|
-
|
|
380
|
+
rb_warn("block supersedes default value argument");
|
|
381
381
|
|
|
382
382
|
node = dict_lookup(DICT(self), TO_KEY(argv[0]));
|
|
383
383
|
if (node != NULL)
|
|
@@ -1487,13 +1487,6 @@ typedef struct {
|
|
|
1487
1487
|
VALUE pp;
|
|
1488
1488
|
} pp_arg_t;
|
|
1489
1489
|
|
|
1490
|
-
static VALUE
|
|
1491
|
-
pp_object_group(VALUE arg_)
|
|
1492
|
-
{
|
|
1493
|
-
pp_arg_t* arg = (pp_arg_t*)arg_;
|
|
1494
|
-
return rb_funcall(arg->pp, id_object_group, 1, arg->rbtree);
|
|
1495
|
-
}
|
|
1496
|
-
|
|
1497
1490
|
static VALUE
|
|
1498
1491
|
pp_block(RB_BLOCK_CALL_FUNC_ARGLIST(nil, arg_))
|
|
1499
1492
|
{
|
|
@@ -1524,8 +1517,11 @@ rbtree_pretty_print(VALUE self, VALUE pp)
|
|
|
1524
1517
|
pp_arg.rbtree = self;
|
|
1525
1518
|
pp_arg.pp = pp;
|
|
1526
1519
|
|
|
1527
|
-
|
|
1528
|
-
|
|
1520
|
+
{
|
|
1521
|
+
VALUE argv = pp_arg.rbtree;
|
|
1522
|
+
return rb_block_call(pp_arg.pp, id_object_group, 1, &argv,
|
|
1523
|
+
pp_block, (VALUE)&pp_arg);
|
|
1524
|
+
}
|
|
1529
1525
|
}
|
|
1530
1526
|
|
|
1531
1527
|
/*
|
data/test.rb
CHANGED
|
@@ -722,27 +722,30 @@ class RBTreeTest < Test::Unit::TestCase
|
|
|
722
722
|
|
|
723
723
|
def test_pp
|
|
724
724
|
assert_equal(%(#<RBTree: {}, default=nil, cmp_proc=nil>\n),
|
|
725
|
-
|
|
726
|
-
|
|
725
|
+
PP.pp(RBTree[], ""))
|
|
726
|
+
|
|
727
|
+
arrow = RUBY_VERSION >= "3.4" ? " => " : "=>"
|
|
728
|
+
|
|
729
|
+
assert_equal(%(#<RBTree: {"a"#{arrow}"A", "b"#{arrow}"B"}, default=nil, cmp_proc=nil>\n),
|
|
727
730
|
PP.pp(RBTree[*%w(a A b B)], ""))
|
|
728
731
|
|
|
729
732
|
rbtree = RBTree[*("a".."z").to_a]
|
|
730
733
|
rbtree.default = "a"
|
|
731
734
|
rbtree.readjust {|a, b| a <=> b }
|
|
732
735
|
expected = <<EOS
|
|
733
|
-
#<RBTree: {"a"
|
|
734
|
-
"c"
|
|
735
|
-
"e"
|
|
736
|
-
"g"
|
|
737
|
-
"i"
|
|
738
|
-
"k"
|
|
739
|
-
"m"
|
|
740
|
-
"o"
|
|
741
|
-
"q"
|
|
742
|
-
"s"
|
|
743
|
-
"u"
|
|
744
|
-
"w"
|
|
745
|
-
"y"
|
|
736
|
+
#<RBTree: {"a"#{arrow}"b",
|
|
737
|
+
"c"#{arrow}"d",
|
|
738
|
+
"e"#{arrow}"f",
|
|
739
|
+
"g"#{arrow}"h",
|
|
740
|
+
"i"#{arrow}"j",
|
|
741
|
+
"k"#{arrow}"l",
|
|
742
|
+
"m"#{arrow}"n",
|
|
743
|
+
"o"#{arrow}"p",
|
|
744
|
+
"q"#{arrow}"r",
|
|
745
|
+
"s"#{arrow}"t",
|
|
746
|
+
"u"#{arrow}"v",
|
|
747
|
+
"w"#{arrow}"x",
|
|
748
|
+
"y"#{arrow}"z"},
|
|
746
749
|
default="a",
|
|
747
750
|
cmp_proc=#{rbtree.cmp_proc}>
|
|
748
751
|
EOS
|
|
@@ -752,7 +755,7 @@ EOS
|
|
|
752
755
|
rbtree[rbtree] = rbtree
|
|
753
756
|
rbtree.default = rbtree
|
|
754
757
|
expected = <<EOS
|
|
755
|
-
#<RBTree: {"#<RBTree: ...>"
|
|
758
|
+
#<RBTree: {"#<RBTree: ...>"#{arrow}"#<RBTree: ...>"},
|
|
756
759
|
default="#<RBTree: ...>",
|
|
757
760
|
cmp_proc=nil>
|
|
758
761
|
EOS
|
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbtree3
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kyrylo Silin
|
|
8
8
|
- OZAWA Takuma
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
13
12
|
dependencies: []
|
|
14
13
|
description: |-
|
|
15
14
|
A RBTree is a sorted associative collection that is implemented with a Red-Black Tree. It maps keys to values like a Hash, but maintains its elements in ascending key order. The interface is the almost identical to that of Hash.
|
|
@@ -39,7 +38,6 @@ metadata:
|
|
|
39
38
|
homepage_uri: https://github.com/kyrylo/rbtree3
|
|
40
39
|
source_code_uri: https://github.com/kyrylo/rbtree3
|
|
41
40
|
changelog_uri: https://github.com/kyrylo/rbtree3/blob/master/ChangeLog
|
|
42
|
-
post_install_message:
|
|
43
41
|
rdoc_options: []
|
|
44
42
|
require_paths:
|
|
45
43
|
- "./"
|
|
@@ -54,8 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
54
52
|
- !ruby/object:Gem::Version
|
|
55
53
|
version: '0'
|
|
56
54
|
requirements: []
|
|
57
|
-
rubygems_version:
|
|
58
|
-
signing_key:
|
|
55
|
+
rubygems_version: 4.0.3
|
|
59
56
|
specification_version: 4
|
|
60
57
|
summary: A RBTree is a sorted associative collection that is implemented with a Red-Black
|
|
61
58
|
Tree.
|