2
2
3
3
VALUE cNokogiriXmlNodeSet ;
4
4
5
- static ID decorate ;
5
+ /* static ID decorate ; */
6
6
7
7
static void
8
8
Check_Node_Set_Node_Type (VALUE node )
@@ -415,27 +415,27 @@ to_array(VALUE self)
415
415
*
416
416
* Unlink this NodeSet and all Node objects it contains from their current context.
417
417
*/
418
- static VALUE
419
- unlink_nodeset (VALUE self )
420
- {
421
- xmlNodeSetPtr node_set ;
422
- int j , nodeNr ;
423
-
424
- Data_Get_Struct (self , xmlNodeSet , node_set );
425
-
426
- nodeNr = node_set -> nodeNr ;
427
- for (j = 0 ; j < nodeNr ; j ++ ) {
428
- if (! NOKOGIRI_NAMESPACE_EH (node_set -> nodeTab [j ])) {
429
- VALUE node ;
430
- xmlNodePtr node_ptr ;
431
- node = noko_xml_node_wrap (Qnil , node_set -> nodeTab [j ]);
432
- rb_funcall (node , rb_intern ("unlink" ), 0 ); /* modifies the C struct out from under the object */
433
- Noko_Node_Get_Struct (node , xmlNode , node_ptr );
434
- node_set -> nodeTab [j ] = node_ptr ;
435
- }
436
- }
437
- return self ;
438
- }
418
+ /* static VALUE */
419
+ /* unlink_nodeset(VALUE self) */
420
+ /* { */
421
+ /* xmlNodeSetPtr node_set; */
422
+ /* int j, nodeNr ; */
423
+
424
+ /* Data_Get_Struct(self, xmlNodeSet, node_set); */
425
+
426
+ /* nodeNr = node_set->nodeNr ; */
427
+ /* for (j = 0 ; j < nodeNr ; j++) { */
428
+ /* if (! NOKOGIRI_NAMESPACE_EH(node_set->nodeTab[j])) { */
429
+ /* VALUE node ; */
430
+ /* xmlNodePtr node_ptr; */
431
+ /* node = noko_xml_node_wrap(Qnil, node_set->nodeTab[j]); */
432
+ /* rb_funcall(node, rb_intern("unlink"), 0); /\ * modifies the C struct out from under the object *\/ */
433
+ /* Noko_Node_Get_Struct(node, xmlNode, node_ptr); */
434
+ /* node_set->nodeTab[j] = node_ptr ; */
435
+ /* } */
436
+ /* } */
437
+ /* return self ; */
438
+ /* } */
439
439
440
440
441
441
VALUE
@@ -444,20 +444,13 @@ noko_xml_node_set_wrap(xmlNodeSetPtr c_node_set, VALUE document)
444
444
int j ;
445
445
VALUE rb_node_set ;
446
446
447
- if (c_node_set == NULL ) {
448
- c_node_set = xmlXPathNodeSetCreate (NULL );
449
- }
450
-
451
- rb_node_set = Data_Wrap_Struct (cNokogiriXmlNodeSet , mark , deallocate , c_node_set );
452
-
453
- if (!NIL_P (document )) {
454
- rb_iv_set (rb_node_set , "@document" , document );
455
- rb_funcall (document , decorate , 1 , rb_node_set );
456
- }
447
+ rb_node_set = rb_class_new_instance (1 , & document , cNokogiriXmlNodeSet );
457
448
458
449
/* make sure we create ruby objects for all the results, so they'll be marked during the GC mark phase */
459
- for (j = 0 ; j < c_node_set -> nodeNr ; j ++ ) {
460
- noko_xml_node_wrap_node_set_result (c_node_set -> nodeTab [j ], rb_node_set );
450
+ if (c_node_set ) {
451
+ for (j = 0 ; j < c_node_set -> nodeNr ; j ++ ) {
452
+ rb_ary_push (rb_node_set , noko_xml_node_wrap_node_set_result (c_node_set -> nodeTab [j ], rb_node_set ));
453
+ }
461
454
}
462
455
463
456
return rb_node_set ;
@@ -477,22 +470,22 @@ noko_xml_node_wrap_node_set_result(xmlNodePtr node, VALUE node_set)
477
470
void
478
471
noko_init_xml_node_set (void )
479
472
{
480
- cNokogiriXmlNodeSet = rb_define_class_under (mNokogiriXml , "NodeSet" , rb_cObject );
481
-
482
- rb_define_alloc_func (cNokogiriXmlNodeSet , allocate );
483
-
484
- rb_define_method (cNokogiriXmlNodeSet , "length" , length , 0 );
485
- rb_define_method (cNokogiriXmlNodeSet , "[]" , slice , -1 );
486
- rb_define_method (cNokogiriXmlNodeSet , "slice" , slice , -1 );
487
- rb_define_method (cNokogiriXmlNodeSet , "push" , push , 1 );
488
- rb_define_method (cNokogiriXmlNodeSet , "|" , rb_xml_node_set_union , 1 );
489
- rb_define_method (cNokogiriXmlNodeSet , "-" , minus , 1 );
490
- rb_define_method (cNokogiriXmlNodeSet , "unlink" , unlink_nodeset , 0 );
491
- rb_define_method (cNokogiriXmlNodeSet , "to_a" , to_array , 0 );
492
- rb_define_method (cNokogiriXmlNodeSet , "dup" , duplicate , 0 );
493
- rb_define_method (cNokogiriXmlNodeSet , "delete" , delete , 1 );
494
- rb_define_method (cNokogiriXmlNodeSet , "&" , intersection , 1 );
495
- rb_define_method (cNokogiriXmlNodeSet , "include?" , include_eh , 1 );
496
-
497
- decorate = rb_intern ("decorate" );
473
+ cNokogiriXmlNodeSet = rb_define_class_under (mNokogiriXml , "NodeSet" , rb_cArray );
474
+
475
+ /* rb_define_alloc_func(cNokogiriXmlNodeSet, allocate); */
476
+
477
+ /* rb_define_method(cNokogiriXmlNodeSet, "length", length, 0); */
478
+ /* rb_define_method(cNokogiriXmlNodeSet, "[]", slice, -1); */
479
+ /* rb_define_method(cNokogiriXmlNodeSet, "slice", slice, -1); */
480
+ /* rb_define_method(cNokogiriXmlNodeSet, "push", push, 1); */
481
+ /* rb_define_method(cNokogiriXmlNodeSet, "|", rb_xml_node_set_union, 1); */
482
+ /* rb_define_method(cNokogiriXmlNodeSet, "-", minus, 1); */
483
+ /* rb_define_method(cNokogiriXmlNodeSet, "unlink", unlink_nodeset, 0); */
484
+ /* rb_define_method(cNokogiriXmlNodeSet, "to_a", to_array, 0); */
485
+ /* rb_define_method(cNokogiriXmlNodeSet, "dup", duplicate, 0); */
486
+ /* rb_define_method(cNokogiriXmlNodeSet, "delete", delete, 1); */
487
+ /* rb_define_method(cNokogiriXmlNodeSet, "&", intersection, 1); */
488
+ /* rb_define_method(cNokogiriXmlNodeSet, "include?", include_eh, 1); */
489
+
490
+ /* decorate = rb_intern("decorate"); */
498
491
}
0 commit comments