+extern "C" CAMLprim value caml_set_tag_bits(value result, value tag, value tree, value node)
+{
+ CAMLparam3(tag,tree,node);
+ results r;
+ XMLTree *t = XMLTREE(Field(tree,0));
+ treeNode opening = TREENODEVAL(node);
+ treeNode closing = t->Closing(opening);
+ TagType target_tag = Int_val(tag);
+ treeNode first = t->TaggedDesc(opening,target_tag);
+ r = *( (results *) result);
+ opening = first;
+ while (opening != NULLT){
+ setResult(r,opening);
+ opening = t->TaggedFollBefore(opening,target_tag,closing);
+ };
+ CAMLreturn(Val_int(first));
+}
+