@@ -159,6 +159,14 @@ static void yajl_encoder_wrapper_mark(void * wrapper) {
159159 }
160160}
161161
162+ static const rb_data_type_t yajl_encoder_wrapper_type = {
163+ "YAJL::Encoder" ,
164+ {
165+ yajl_encoder_wrapper_mark ,
166+ yajl_encoder_wrapper_free ,
167+ }
168+ };
169+
162170static VALUE yajl_key_to_string (VALUE obj ) {
163171 switch (TYPE (obj )) {
164172 case T_STRING :
@@ -309,6 +317,14 @@ void yajl_parser_wrapper_mark(void * wrapper) {
309317 }
310318}
311319
320+ static const rb_data_type_t yajl_parser_wrapper_type = {
321+ "YAJL::Parser" ,
322+ {
323+ yajl_parser_wrapper_mark ,
324+ yajl_parser_wrapper_free ,
325+ }
326+ };
327+
312328void yajl_parse_chunk (const unsigned char * chunk , unsigned int len , yajl_handle parser ) {
313329 yajl_status stat ;
314330
@@ -486,7 +502,7 @@ static VALUE rb_yajl_parser_new(int argc, VALUE * argv, VALUE klass) {
486502 }
487503 cfg = (yajl_parser_config ){allowComments , checkUTF8 };
488504
489- obj = Data_Make_Struct (klass , yajl_parser_wrapper , yajl_parser_wrapper_mark , yajl_parser_wrapper_free , wrapper );
505+ obj = TypedData_Make_Struct (klass , yajl_parser_wrapper , & yajl_parser_wrapper_type , wrapper );
490506 wrapper -> parser = yajl_alloc (& callbacks , & cfg , & rb_alloc_funcs , (void * )obj );
491507 wrapper -> nestedArrayLevel = 0 ;
492508 wrapper -> nestedHashLevel = 0 ;
@@ -1089,7 +1105,7 @@ static VALUE rb_yajl_encoder_new(int argc, VALUE * argv, VALUE klass) {
10891105 }
10901106 cfg = (yajl_gen_config ){beautify , (const char * )indentString , htmlSafe };
10911107
1092- obj = Data_Make_Struct (klass , yajl_encoder_wrapper , yajl_encoder_wrapper_mark , yajl_encoder_wrapper_free , wrapper );
1108+ obj = TypedData_Make_Struct (klass , yajl_encoder_wrapper , & yajl_encoder_wrapper_type , wrapper );
10931109 wrapper -> indentString = actualIndent ;
10941110 wrapper -> encoder = yajl_gen_alloc (& cfg , & rb_alloc_funcs );
10951111 wrapper -> on_progress_callback = Qnil ;
0 commit comments