/* * call-seq: * to_a * * Return this list as an Array */ static VALUE to_array(VALUE self, VALUE rb_node) { xmlNodeSetPtr set; VALUE *elts; VALUE list; int i; Data_Get_Struct(self, xmlNodeSet, set); elts = calloc((size_t)set->nodeNr, sizeof(VALUE *)); for(i = 0; i < set->nodeNr; i++) { if (XML_NAMESPACE_DECL == set->nodeTab[i]->type) { elts[i] = Nokogiri_wrap_xml_namespace2(rb_iv_get(self, "@document"), (xmlNsPtr)(set->nodeTab[i])); } else { xmlNodePtr node = set->nodeTab[i]; if(node->_private) { if(node->type == XML_DOCUMENT_NODE || node->type == XML_HTML_DOCUMENT_NODE) elts[i] = DOC_RUBY_OBJECT(node->doc); else elts[i] = (VALUE)node->_private; } else { elts[i] = Nokogiri_wrap_xml_node(Qnil, node); } } } list = rb_ary_new4((long)set->nodeNr, elts); /*free(elts); */ return list; }