Add hook methods to Parakeet::Params

This commit is contained in:
Kitaiti Makoto 2026-05-07 01:12:16 +09:00
parent 105f7a86b9
commit d051ab6261
1 changed files with 22 additions and 0 deletions

View File

@ -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