+NoAlloc extern "C" value caml_xml_tree_child(value tree, value node,value idx){
+ return (Val_int(XMLTREE(tree)->Child(TREENODEVAL(node),Int_val(idx))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_first_child(value tree, value node){
+ return (Val_int(XMLTREE(tree)->FirstChild(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_first_element(value tree, value node){
+ return (Val_int(XMLTREE(tree)->FirstElement(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_last_child(value tree, value node){
+ return (Val_int(XMLTREE(tree)->LastChild(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_next_sibling(value tree, value node){
+ return (Val_int(XMLTREE(tree)->NextSibling(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_next_element(value tree, value node){
+ return (Val_int(XMLTREE(tree)->NextElement(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_prev_sibling(value tree, value node){
+ return (Val_int(XMLTREE(tree)->PrevSibling(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_child(value tree, value node,value tag){
+ return (Val_int(XMLTREE(tree)->TaggedChild(TREENODEVAL(node),TAGVAL(tag))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_select_child(value tree, value node,value tags){
+ return (Val_int(XMLTREE(tree)->SelectChild(TREENODEVAL(node), HSET(tags))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_following_sibling(value tree, value node,value tag){
+ return (Val_int(XMLTREE(tree)->TaggedFollowingSibling(TREENODEVAL(node),TAGVAL(tag))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_select_following_sibling(value tree, value node,value tags){
+ return (Val_int(XMLTREE(tree)->SelectFollowingSibling(TREENODEVAL(node), HSET(tags))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_descendant(value tree, value node, value tag){
+ return (Val_int(XMLTREE(tree)->TaggedDescendant(TREENODEVAL(node), TAGVAL(tag))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_select_descendant(value tree, value node, value tags){
+ return (Val_int(XMLTREE(tree)->SelectDescendant(TREENODEVAL(node), HSET(tags))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_preceding(value tree, value node, value tag){
+ return (Val_int(XMLTREE(tree)->TaggedPreceding(TREENODEVAL(node), TAGVAL(tag))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_following(value tree, value node, value tag){
+ return (Val_int(XMLTREE(tree)->TaggedFollowing(TREENODEVAL(node), TAGVAL(tag))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_following_below(value tree, value node, value tag, value ancestor){
+ return (Val_int(XMLTREE(tree)->TaggedFollowingBelow(TREENODEVAL(node), TAGVAL(tag), TREENODEVAL(ancestor))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_select_following_below(value tree, value node, value tags, value ancestor){
+ return (Val_int(XMLTREE(tree)->SelectFollowingBelow(TREENODEVAL(node), HSET(tags), TREENODEVAL(ancestor))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_following_before(value tree, value node, value tag, value closing){
+ return (Val_int(XMLTREE(tree)->TaggedFollowingBefore(TREENODEVAL(node), TAGVAL(tag), TREENODEVAL(closing))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_select_following_before(value tree, value node, value tags, value closing){
+ return (Val_int(XMLTREE(tree)->SelectFollowingBefore(TREENODEVAL(node), HSET(tags), TREENODEVAL(closing))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_tagged_ancestor(value tree, value node, value tag){
+ return (Val_int(XMLTREE(tree)->TaggedAncestor(TREENODEVAL(node), TAGVAL(tag))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_my_text(value tree, value node){
+ return (Val_int(XMLTREE(tree)->MyText(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_my_text_unsafe(value tree, value node){
+ return (Val_int(XMLTREE(tree)->MyTextUnsafe(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_text_xml_id(value tree, value docid){
+ return (Val_int(XMLTREE(tree)->TextXMLId(Int_val(docid))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_node_xml_id(value tree, value node){
+ return (Val_int(XMLTREE(tree)->NodeXMLId(TREENODEVAL(node))));
+}
+
+NoAlloc extern "C" value caml_xml_tree_parent_node(value tree, value docid){
+ return (Val_int(XMLTREE(tree)->ParentNode(Int_val(docid))));
+}
+/*
+NoAlloc extern "C" value caml_xml_tree_prev_node(value tree, value docid){
+ return (Val_int(XMLTREE(tree)->PrevNode(Int_val(docid))));
+}
+*/
+extern "C" value caml_xml_tree_get_tag_id(value tree, value tagname){
+ CAMLparam2(tree,tagname);