summaryrefslogtreecommitdiff
path: root/struct.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-06-12 11:15:19 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-07-13 17:55:55 +0900
commit9c1fe9064c56cef3bde856d7fa1f907195af1003 (patch)
treea703b38cdb661ea4c72eb8d17b19f6c1566a0195 /struct.c
parentd426343418aab6148706860bd1678ac309dc12c0 (diff)
[Feature #19757] Add new API `rb_data_define`
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/8066
Diffstat (limited to 'struct.c')
-rw-r--r--struct.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/struct.c b/struct.c
index 93053f0ad5..574c74d95c 100644
--- a/struct.c
+++ b/struct.c
@@ -1722,6 +1722,18 @@ rb_data_s_def(int argc, VALUE *argv, VALUE klass)
return data_class;
}
+VALUE
+rb_data_define(VALUE super, ...)
+{
+ va_list ar;
+ VALUE ary;
+ va_start(ar, super);
+ ary = struct_make_members_list(ar);
+ va_end(ar);
+ if (!super) super = rb_cData;
+ return setup_data(anonymous_struct(super), ary);
+}
+
/*
* call-seq:
* DataClass::members -> array_of_symbols