#include <caml/fail.h>
#include <caml/custom.h>
#include "results.h"
+#include <stdio.h>
#define CAMLRAISEMSG(msg) (caml_raise_with_string(*cpp_exception,(msg) ))
#define NOT_IMPLEMENTED(s) (caml_failwith(s))
catch (char const * msg){ CAMLRAISEMSG(msg); };
}
-
-
extern "C" CAMLprim value caml_text_collection_get_text(value tree, value id){
CAMLparam2(tree,id);
CAMLlocal1(str);
}
extern "C" CAMLprim value caml_xml_tree_first_element(value tree, value id){
- return(Val_int (XMLTREE(tree)->FirstElement(TREENODEVAL(id))));
+ return(Val_int (XMLTREE(Field(tree,0))->FirstElement(TREENODEVAL(id))));
}
extern "C" CAMLprim value caml_xml_tree_tagged_child(value tree, value id, value tag){
}
extern "C" CAMLprim value caml_xml_tree_next_element(value tree, value id){
- return(Val_int (XMLTREE(tree)->NextElement(TREENODEVAL(id))));
+ return(Val_int (XMLTREE(Field(tree,0))->NextElement(TREENODEVAL(id))));
}
extern "C" CAMLprim value caml_xml_tree_tagged_sibling(value tree, value id, value tag){
extern "C" CAMLprim value caml_xml_tree_tagged_foll_below(value tree, value id, value tag,value root){
return(Val_int (XMLTREE(tree)->TaggedFollBelow(TREENODEVAL(id),(TagType) Int_val(tag),TREENODEVAL(root))));
}
+extern "C" CAMLprim value caml_xml_tree_tagged_foll_before(value tree, value id, value tag,value root){
+ return(Val_int (XMLTREE(tree)->TaggedFollBefore(TREENODEVAL(id),(TagType) Int_val(tag),TREENODEVAL(root))));
+}
extern "C" CAMLprim value caml_xml_tree_my_text(value tree, value id){
return(Val_int((XMLTREE(tree)->MyText(TREENODEVAL(id)))));
HSET(tags),
TREENODEVAL(ctx))));
}
+extern "C" CAMLprim value caml_xml_tree_select_foll_before(value tree, value node, value tags,value ctx){
+ return (Val_int (XMLTREE(tree)->SelectFollBelow(TREENODEVAL(node),
+ HSET(tags),
+ TREENODEVAL(ctx))));
+}
extern "C" CAMLprim value caml_xml_tree_doc_ids(value tree, value node){
extern "C" CAMLprim value caml_result_set_set(value result,value p){
CAMLparam1(p);
- results r;
setResult ( *((results*) result), Int_val(p));
CAMLreturn (Val_unit);
}
CAMLreturn(Val_unit);
}
+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));
+}
+