/*
* 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;
}