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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +12 -0
  3. data/rbtree.c +8 -12
  4. data/test.rb +19 -16
  5. metadata +3 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6593e6073d49e075b44d1b1f3be4b244d58fc91b4f2c0705bdec7b5c4a9e11e
4
- data.tar.gz: 128e6b9623e23694b48cafea9ff6012fe9a7d2473a24272f221ce7ec104b47ac
3
+ metadata.gz: 8d27d1e7a32ef3f88ddf0e3a4e6feed5d2fc8df02fd39d1d353c51a91d4f6ad2
4
+ data.tar.gz: 548f44e98a342c617f37ce6775a7686915fbd66a4e76e5bca401969910f16311
5
5
  SHA512:
6
- metadata.gz: 6c2dc0315779d6a7bdaf9ca7c591ea88c4161c46fac1c56bcba51673258c6c80c77113c7222444ea8567ce1cdcae3406cf8eeb0865c0f9e224203fd484a7606b
7
- data.tar.gz: eb53a14756e78a30701c01c8ed0f8b5354e6ed499a790164cd30eb5018d942acd939ddc5008dfce33eca1c695438815f136f8ee093c1b0f5f5eec23ecb5cfc80
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
- rb_warn("block supersedes default value argument");
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
- return rb_iterate(pp_object_group, (VALUE)&pp_arg,
1528
- pp_block, (VALUE)&pp_arg);
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
- PP.pp(RBTree[], ""))
726
- assert_equal(%(#<RBTree: {"a"=>"A", "b"=>"B"}, default=nil, cmp_proc=nil>\n),
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"=>"b",
734
- "c"=>"d",
735
- "e"=>"f",
736
- "g"=>"h",
737
- "i"=>"j",
738
- "k"=>"l",
739
- "m"=>"n",
740
- "o"=>"p",
741
- "q"=>"r",
742
- "s"=>"t",
743
- "u"=>"v",
744
- "w"=>"x",
745
- "y"=>"z"},
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: ...>"=>"#<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.7.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: 2022-01-10 00:00:00.000000000 Z
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: 3.1.6
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.