rucy 0.3.13 → 0.3.15

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e00e91444fff75c3bcce95970122b74ed7b90cfd25fa624c39135e9edd25bc94
4
- data.tar.gz: f97ce5707abc53840eb150f0d04914cf017ee806bb9561e4310647c2f933b3ee
3
+ metadata.gz: cc4f7fee7f0a2aedcf492a2b3621b9c7645da603fcbfff3db9da7e664f6fca2c
4
+ data.tar.gz: 9a13b6805b3d458f118d3b8ee352bab603dc16a778a79263ee1997383969380d
5
5
  SHA512:
6
- metadata.gz: b5309d718c81ea92139084d38894b099fb511f9fae0e9da1387740046136e1da8cc054a8ebadbc1353e430ec738264c5bba92c7e9f51ea9f9b7b8701a5b25be3
7
- data.tar.gz: fcfd31e82f5c3abb5e13bcf827540fb87a5e32dcafad5f77d4fea15e0285658b6ccd2db2e0170c828e65f1480975c05390b63d93515bc0260f0266acaf892f82
6
+ metadata.gz: 9c16bd8827c6754a7d8806660d9e752ee59f1cf6979cc6ae4e593014012fdcda6feb2ce4d65021f72b9dc083c90b07023f99919d67bb51e89fa184cedef83229
7
+ data.tar.gz: 7100170bfbe2d93b187f44eb761a9908d3f23c06b7832c1161620a491597f473e4034b6c555fc4d88a88c9e2d8e8e05aa6ecb10dae9d0e7ece74c9661a3417e0
data/ChangeLog.md CHANGED
@@ -1,6 +1,16 @@
1
1
  # rucy ChangeLog
2
2
 
3
3
 
4
+ ## [v0.3.15] - 2026-06-23
5
+
6
+ - Add define_wrapper_equality_methods for wrapper identity
7
+
8
+
9
+ ## [v0.3.14] - 2026-06-12
10
+
11
+ - Use modern TypedData API
12
+
13
+
4
14
  ## [v0.3.13] - 2026-05-17
5
15
 
6
16
  - Rewrite README.md
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.13
1
+ 0.3.15
@@ -425,7 +425,8 @@ namespace Rucy
425
425
  inline Value new_type (Value klass, T* ptr)
426
426
  {
427
427
  if (!ptr) return nil();
428
- return rb_data_typed_object_wrap(klass, ptr, get_data_type<T, mark, free>());
428
+ const rb_data_type_t* type = get_data_type<T, mark, free>();
429
+ return TypedData_Wrap_Struct(klass, type, ptr);
429
430
  }
430
431
 
431
432
  template <
@@ -479,7 +480,41 @@ namespace Rucy
479
480
  template <typename T> inline T* get_type_ptr (Value obj, Value klass = nil())
480
481
  {
481
482
  if (!klass.is_nil()) check_class(obj, klass);
483
+ #ifdef RTYPEDDATA_GET_DATA
484
+ return (T*) RTYPEDDATA_GET_DATA(obj.value());
485
+ #else
482
486
  return (T*) DATA_PTR(obj.value());
487
+ #endif
488
+ }
489
+
490
+
491
+ template <typename T>
492
+ static
493
+ RUCY_DEF1(wrapper_equal, other)
494
+ {
495
+ RUCY_CHECK_OBJ(T, self);
496
+ if (!other.is_a(get_ruby_class<T>()))
497
+ return value(false);
498
+ return value(get_type_ptr<T>(self) == get_type_ptr<T>(other));
499
+ }
500
+ RUCY_DEF_END
501
+
502
+ template <typename T>
503
+ static
504
+ RUCY_DEF0(wrapper_hash)
505
+ {
506
+ RUCY_CHECK_OBJ(T, self);
507
+ return value((unsigned long long) get_type_ptr<T>(self));
508
+ }
509
+ RUCY_DEF_END
510
+
511
+ template <typename T>
512
+ inline void
513
+ define_wrapper_equality_methods (Class klass)
514
+ {
515
+ klass.define_method("==", wrapper_equal<T>);
516
+ klass.define_method("eql?", wrapper_equal<T>);
517
+ klass.define_method("hash", wrapper_hash<T>);
483
518
  }
484
519
 
485
520
 
data/rucy.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.platform = Gem::Platform::RUBY
26
26
  s.required_ruby_version = '>= 3.0.0'
27
27
 
28
- s.add_dependency 'xot', '~> 0.3.13'
28
+ s.add_dependency 'xot', '~> 0.3.15'
29
29
 
30
30
  s.files = `git ls-files`.split $/
31
31
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rucy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.13
4
+ version: 0.3.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-16 00:00:00.000000000 Z
11
+ date: 2026-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.13
19
+ version: 0.3.15
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
- version: 0.3.13
26
+ version: 0.3.15
27
27
  description: This library helps you to develop Ruby Extension by C++.
28
28
  email: xordog@gmail.com
29
29
  executables: