Use ITERATE_CALLBACK_PARAMS

This commit is contained in:
Kitaiti Makoto 2026-05-06 21:21:54 +09:00
parent cd0e91175a
commit d051c08841
1 changed files with 20 additions and 24 deletions

View File

@ -53,32 +53,28 @@ static void
ruby_whisper_parakeet_params_mark(void *p)
{
ruby_whisper_parakeet_params *rwpp = (ruby_whisper_parakeet_params *)p;
ruby_whisper_callback_container_mark(rwpp->new_segment_callback_container);
ruby_whisper_callback_container_mark(rwpp->new_token_callback_container);
ruby_whisper_callback_container_mark(rwpp->progress_callback_container);
ruby_whisper_callback_container_mark(rwpp->encoder_begin_callback_container);
ruby_whisper_callback_container_mark(rwpp->abort_callback_container);
#define MARK_CONTAINER(name) ruby_whisper_callback_container_mark(rwpp->name##_container);
ITERATE_CALLBACK_PARAMS(MARK_CONTAINER)
#undef MARK_CONTAINER
}
static void
ruby_whisper_parakeet_params_free(void *p)
{
ruby_whisper_parakeet_params *rwpp = (ruby_whisper_parakeet_params *)p;
if (rwpp->params.new_segment_callback_user_data) {
xfree(&rwpp->params.new_segment_callback_user_data);
}
if (rwpp->params.new_token_callback_user_data) {
xfree(&rwpp->params.new_token_callback_user_data);
}
if (rwpp->params.progress_callback_user_data) {
xfree(&rwpp->params.progress_callback_user_data);
}
if (rwpp->params.encoder_begin_callback_user_data) {
xfree(&rwpp->params.encoder_begin_callback_user_data);
}
if (rwpp->params.abort_callback_user_data) {
xfree(&rwpp->params.abort_callback_user_data);
#define FREE_CONTAINER(name) \
if (rwpp->name##_container) { \
xfree(rwpp->name##_container); \
}
ITERATE_CALLBACK_PARAMS(FREE_CONTAINER)
#undef FREE_CONTAINER
xfree(rwpp);
}
@ -197,11 +193,11 @@ ruby_whisper_parakeet_params_initialize(int argc, VALUE *argv, VALUE self)
TypedData_Get_Struct(self, ruby_whisper_parakeet_params, &ruby_whisper_parakeet_params_type, rwpp);
rwpp->new_segment_callback_container = ruby_whisper_callback_container_allocate();
rwpp->new_token_callback_container = ruby_whisper_callback_container_allocate();
rwpp->progress_callback_container = ruby_whisper_callback_container_allocate();
rwpp->encoder_begin_callback_container = ruby_whisper_callback_container_allocate();
rwpp->abort_callback_container = ruby_whisper_callback_container_allocate();
#define INIT_CONTAINER(name) rwpp->name##_container = ruby_whisper_callback_container_allocate();
ITERATE_CALLBACK_PARAMS(INIT_CONTAINER)
#undef INIT_CONTAINER
rb_scan_args_kw(RB_SCAN_ARGS_KEYWORDS, argc, argv, ":", &kw_hash);
if (NIL_P(kw_hash)) {