diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-11-08 09:06:21 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-11-10 11:59:45 +0900 |
commit | 6eaed20e145c1ab4c9c4ccf669d0ebea934f4d36 (patch) | |
tree | ec43f8696b661dcd8d19ad60e353999fbac0490b /include | |
parent | 0ae5de1a5ddcca407dd2ba30ca5d5f3d7c3ea4bc (diff) | |
download | ruby-6eaed20e145c1ab4c9c4ccf669d0ebea934f4d36.tar.gz |
Add version to the interface of Random extensions
Diffstat (limited to 'include')
-rw-r--r-- | include/ruby/random.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/include/ruby/random.h b/include/ruby/random.h index e3176dbe6b..989445f2f9 100644 --- a/include/ruby/random.h +++ b/include/ruby/random.h @@ -16,6 +16,26 @@ #include "ruby/ruby.h" +/* + * version + * 0: before versioning; deprecated + * 1: added version and flags + */ +#define RUBY_RANDOM_INTERFACE_VERSION_MAJOR 1 +#define RUBY_RANDOM_INTERFACE_VERSION_MINOR 0 + +#define RUBY_RANDOM_PASTE_VERSION_SUFFIX(x, y, z) x##_##y##_##z +#define RUBY_RANDOM_WITH_VERSION_SUFFIX(name, major, minor) \ + RUBY_RANDOM_PASTE_VERSION_SUFFIX(name, major, minor) +#define rb_random_data_type \ + RUBY_RANDOM_WITH_VERSION_SUFFIX(rb_random_data_type, \ + RUBY_RANDOM_INTERFACE_VERSION_MAJOR, \ + RUBY_RANDOM_INTERFACE_VERSION_MINOR) +#define RUBY_RANDOM_INTERFACE_VERSION_INITIALIZER \ + {RUBY_RANDOM_INTERFACE_VERSION_MAJOR, RUBY_RANDOM_INTERFACE_VERSION_MINOR} +#define RUBY_RANDOM_INTERFACE_VERSION_MAJOR_MAX 0xff +#define RUBY_RANDOM_INTERFACE_VERSION_MINOR_MAX 0xff + RBIMPL_SYMBOL_EXPORT_BEGIN() /** @@ -84,6 +104,18 @@ typedef struct { /** Number of bits of seed numbers. */ size_t default_seed_bits; + /** + * Major/minor versions of this interface + */ + struct { + uint8_t major, minor; + } version; + + /** + * Reserved flags + */ + uint16_t flags; + /** Initialiser function. */ rb_random_init_func *init; @@ -161,6 +193,7 @@ typedef struct { * ``` */ #define RB_RANDOM_INTERFACE_DEFINE(prefix) \ + RUBY_RANDOM_INTERFACE_VERSION_INITIALIZER, 0, \ prefix##_init, \ prefix##_get_int32, \ prefix##_get_bytes |