@@ -1171,7 +1171,7 @@ typedef struct {
11711171} ruby_whisper_segment;
11721172
11731173typedef struct {
1174- whisper_context * context;
1174+ VALUE context;
11751175} ruby_whisper_model;
11761176
11771177VALUE cSegment;
@@ -1348,13 +1348,17 @@ static VALUE ruby_whisper_segment_get_text(VALUE self) {
13481348 return rb_str_new2 (text);
13491349}
13501350
1351+ static void rb_whisper_model_mark (ruby_whisper_model *rwm) {
1352+ rb_gc_mark (rwm->context );
1353+ }
1354+
13511355static VALUE ruby_whisper_model_allocate (VALUE klass) {
13521356 ruby_whisper_model *rwm;
13531357 rwm = ALLOC (ruby_whisper_model);
1354- return Data_Wrap_Struct (klass, NULL , RUBY_DEFAULT_FREE, rwm);
1358+ return Data_Wrap_Struct (klass, rb_whisper_model_mark , RUBY_DEFAULT_FREE, rwm);
13551359}
13561360
1357- static VALUE rb_whisper_model_initialize (whisper_context * context) {
1361+ static VALUE rb_whisper_model_initialize (VALUE context) {
13581362 ruby_whisper_model *rwm;
13591363 const VALUE model = ruby_whisper_model_allocate (cModel);
13601364 Data_Get_Struct (model, ruby_whisper_model, rwm);
@@ -1367,9 +1371,7 @@ static VALUE rb_whisper_model_initialize(whisper_context *context) {
13671371 * model -> Whisper::Model
13681372 */
13691373static VALUE ruby_whisper_get_model (VALUE self) {
1370- ruby_whisper *rw;
1371- Data_Get_Struct (self, ruby_whisper, rw);
1372- return rb_whisper_model_initialize (rw->context );
1374+ return rb_whisper_model_initialize (self);
13731375}
13741376
13751377/*
@@ -1379,7 +1381,9 @@ static VALUE ruby_whisper_get_model(VALUE self) {
13791381static VALUE ruby_whisper_c_model_n_vocab (VALUE self) {
13801382 ruby_whisper_model *rwm;
13811383 Data_Get_Struct (self, ruby_whisper_model, rwm);
1382- return INT2NUM (whisper_model_n_vocab (rwm->context ));
1384+ ruby_whisper *rw;
1385+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1386+ return INT2NUM (whisper_model_n_vocab (rw->context ));
13831387}
13841388
13851389/*
@@ -1389,7 +1393,9 @@ static VALUE ruby_whisper_c_model_n_vocab(VALUE self) {
13891393static VALUE ruby_whisper_c_model_n_audio_ctx (VALUE self) {
13901394 ruby_whisper_model *rwm;
13911395 Data_Get_Struct (self, ruby_whisper_model, rwm);
1392- return INT2NUM (whisper_model_n_audio_ctx (rwm->context ));
1396+ ruby_whisper *rw;
1397+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1398+ return INT2NUM (whisper_model_n_audio_ctx (rw->context ));
13931399}
13941400
13951401/*
@@ -1399,7 +1405,9 @@ static VALUE ruby_whisper_c_model_n_audio_ctx(VALUE self) {
13991405static VALUE ruby_whisper_c_model_n_audio_state (VALUE self) {
14001406 ruby_whisper_model *rwm;
14011407 Data_Get_Struct (self, ruby_whisper_model, rwm);
1402- return INT2NUM (whisper_model_n_audio_state (rwm->context ));
1408+ ruby_whisper *rw;
1409+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1410+ return INT2NUM (whisper_model_n_audio_state (rw->context ));
14031411}
14041412
14051413/*
@@ -1409,7 +1417,9 @@ static VALUE ruby_whisper_c_model_n_audio_state(VALUE self) {
14091417static VALUE ruby_whisper_c_model_n_audio_head (VALUE self) {
14101418 ruby_whisper_model *rwm;
14111419 Data_Get_Struct (self, ruby_whisper_model, rwm);
1412- return INT2NUM (whisper_model_n_audio_head (rwm->context ));
1420+ ruby_whisper *rw;
1421+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1422+ return INT2NUM (whisper_model_n_audio_head (rw->context ));
14131423}
14141424
14151425/*
@@ -1419,7 +1429,9 @@ static VALUE ruby_whisper_c_model_n_audio_head(VALUE self) {
14191429static VALUE ruby_whisper_c_model_n_audio_layer (VALUE self) {
14201430 ruby_whisper_model *rwm;
14211431 Data_Get_Struct (self, ruby_whisper_model, rwm);
1422- return INT2NUM (whisper_model_n_audio_layer (rwm->context ));
1432+ ruby_whisper *rw;
1433+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1434+ return INT2NUM (whisper_model_n_audio_layer (rw->context ));
14231435}
14241436
14251437/*
@@ -1429,7 +1441,9 @@ static VALUE ruby_whisper_c_model_n_audio_layer(VALUE self) {
14291441static VALUE ruby_whisper_c_model_n_text_ctx (VALUE self) {
14301442 ruby_whisper_model *rwm;
14311443 Data_Get_Struct (self, ruby_whisper_model, rwm);
1432- return INT2NUM (whisper_model_n_text_ctx (rwm->context ));
1444+ ruby_whisper *rw;
1445+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1446+ return INT2NUM (whisper_model_n_text_ctx (rw->context ));
14331447}
14341448
14351449/*
@@ -1439,7 +1453,9 @@ static VALUE ruby_whisper_c_model_n_text_ctx(VALUE self) {
14391453static VALUE ruby_whisper_c_model_n_text_state (VALUE self) {
14401454 ruby_whisper_model *rwm;
14411455 Data_Get_Struct (self, ruby_whisper_model, rwm);
1442- return INT2NUM (whisper_model_n_text_state (rwm->context ));
1456+ ruby_whisper *rw;
1457+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1458+ return INT2NUM (whisper_model_n_text_state (rw->context ));
14431459}
14441460
14451461/*
@@ -1449,7 +1465,9 @@ static VALUE ruby_whisper_c_model_n_text_state(VALUE self) {
14491465static VALUE ruby_whisper_c_model_n_text_head (VALUE self) {
14501466 ruby_whisper_model *rwm;
14511467 Data_Get_Struct (self, ruby_whisper_model, rwm);
1452- return INT2NUM (whisper_model_n_text_head (rwm->context ));
1468+ ruby_whisper *rw;
1469+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1470+ return INT2NUM (whisper_model_n_text_head (rw->context ));
14531471}
14541472
14551473/*
@@ -1459,7 +1477,9 @@ static VALUE ruby_whisper_c_model_n_text_head(VALUE self) {
14591477static VALUE ruby_whisper_c_model_n_text_layer (VALUE self) {
14601478 ruby_whisper_model *rwm;
14611479 Data_Get_Struct (self, ruby_whisper_model, rwm);
1462- return INT2NUM (whisper_model_n_text_layer (rwm->context ));
1480+ ruby_whisper *rw;
1481+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1482+ return INT2NUM (whisper_model_n_text_layer (rw->context ));
14631483}
14641484
14651485/*
@@ -1469,7 +1489,9 @@ static VALUE ruby_whisper_c_model_n_text_layer(VALUE self) {
14691489static VALUE ruby_whisper_c_model_n_mels (VALUE self) {
14701490 ruby_whisper_model *rwm;
14711491 Data_Get_Struct (self, ruby_whisper_model, rwm);
1472- return INT2NUM (whisper_model_n_mels (rwm->context ));
1492+ ruby_whisper *rw;
1493+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1494+ return INT2NUM (whisper_model_n_mels (rw->context ));
14731495}
14741496
14751497/*
@@ -1479,7 +1501,9 @@ static VALUE ruby_whisper_c_model_n_mels(VALUE self) {
14791501static VALUE ruby_whisper_c_model_ftype (VALUE self) {
14801502 ruby_whisper_model *rwm;
14811503 Data_Get_Struct (self, ruby_whisper_model, rwm);
1482- return INT2NUM (whisper_model_ftype (rwm->context ));
1504+ ruby_whisper *rw;
1505+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1506+ return INT2NUM (whisper_model_ftype (rw->context ));
14831507}
14841508
14851509/*
@@ -1489,7 +1513,9 @@ static VALUE ruby_whisper_c_model_ftype(VALUE self) {
14891513static VALUE ruby_whisper_c_model_type (VALUE self) {
14901514 ruby_whisper_model *rwm;
14911515 Data_Get_Struct (self, ruby_whisper_model, rwm);
1492- return rb_str_new2 (whisper_model_type_readable (rwm->context ));
1516+ ruby_whisper *rw;
1517+ Data_Get_Struct (rwm->context , ruby_whisper, rw);
1518+ return rb_str_new2 (whisper_model_type_readable (rw->context ));
14931519}
14941520
14951521void Init_whisper () {
0 commit comments