From d051ab626133c7a833def131a42cad14048aa6a4 Mon Sep 17 00:00:00 2001 From: Kitaiti Makoto Date: Thu, 7 May 2026 01:12:16 +0900 Subject: [PATCH] Add hook methods to Parakeet::Params --- .../ruby/ext/ruby_whisper_parakeet_params.c | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/bindings/ruby/ext/ruby_whisper_parakeet_params.c b/bindings/ruby/ext/ruby_whisper_parakeet_params.c index 7ec93126b..4652718ff 100644 --- a/bindings/ruby/ext/ruby_whisper_parakeet_params.c +++ b/bindings/ruby/ext/ruby_whisper_parakeet_params.c @@ -143,9 +143,24 @@ const rb_data_type_t ruby_whisper_parakeet_params_type = { return val; \ } +#define DEF_HOOK(name) \ + static VALUE \ + ruby_whisper_parakeet_params_on_##name(VALUE self) \ + { \ + ruby_whisper_parakeet_params *rwpp; \ + GetParakeetParams(self, rwpp); \ + const VALUE blk = rb_block_proc(); \ + if (!rwpp->name##_container->callbacks) { \ + rwpp->name##_container->callbacks = rb_ary_new(); \ + } \ + rb_ary_push(rwpp->name##_container->callbacks, blk); \ + return Qnil; \ + } + ITERATE_PARAMS(DEF_PARAM_ATTR) ITERATE_CALLBACK_PARAMS(DEF_CALLBACK_PARAM_ATTR) ITERATE_CALLBACK_PARAMS(DEF_USER_DATA_PARAM_ATTR) +ITERATE_CALLBACK_PARAMS(DEF_HOOK) static VALUE ruby_whisper_parakeet_params_s_allocate(VALUE klass) @@ -215,10 +230,16 @@ init_ruby_whisper_parakeet_params(VALUE *mParakeet) ITERATE_CALLBACK_PARAMS(REGISTER_CALLBACK_PARAM_ATTR) ITERATE_CALLBACK_PARAMS(REGISTER_USER_DATA_PARAM_ATTR) +#define REGISTER_HOOK(name) \ + rb_define_method(cParakeetParams, "on_" #name, ruby_whisper_parakeet_params_on_##name, 0); + + ITERATE_CALLBACK_PARAMS(REGISTER_HOOK) + #undef REGISTER_PARAM #undef REGISTER_PARAM_ATTR #undef REGISTER_CALLBACK_PARAM_ATTR #undef REGISTER_USER_DATA_PARAM_ATTR +#undef REGISTER_HOOK } #undef VAL_TO_INT @@ -230,6 +251,7 @@ init_ruby_whisper_parakeet_params(VALUE *mParakeet) #undef CALLBACK_CONTAINER_NAME #undef DEF_CALLBACK_PARAM_ATTR #undef DEF_USER_DATA_PARAM_ATTR +#undef DEF_HOOK #undef READER #undef WRITER #undef DEF_PARAM_ATTR