1 #include "xml-tree-builder.hpp"
2 #include "common_stub.hpp"
6 static xml_tree_builder*& OBJ_VAL(value v)
8 return Obj_val<xml_tree_builder*>(v);
11 extern "C" value caml_xml_tree_builder_create(value unit)
15 result = sxsi_alloc_custom<xml_tree_builder*>();
16 OBJ_VAL(result) = new xml_tree_builder();
21 extern "C" value caml_xml_tree_builder_open_document(value vbuilder,
26 CAMLparam4(vbuilder, vsrate, vdtc, vidxtype);
27 int sample_rate = Int_val(vsrate);
28 bool disable_tc = Bool_val(vdtc);
29 TextCollectionBuilder::index_type_t idx_type;
30 switch (Int_val(vidxtype)){
32 idx_type = TextCollectionBuilder::index_type_default;
35 idx_type = TextCollectionBuilder::index_type_swcsa;
38 idx_type = TextCollectionBuilder::index_type_rlcsa;
41 sxsi_raise_msg("Invalid Index Type");
44 OBJ_VAL(vbuilder)->open_document(disable_tc,
47 CAMLreturn (Val_unit);
50 extern "C" value caml_xml_tree_builder_close_document(value vbuilder)
54 xml_tree *tree = OBJ_VAL(vbuilder)->close_document();
56 sxsi_raise_msg("caml_close_document");
57 result = sxsi_alloc_custom<xml_tree*>();
58 Obj_val<xml_tree*>(result) = tree;
62 extern "C" value caml_xml_tree_builder_open_tag(value vbuilder, value vtag)
64 CAMLparam2(vbuilder, vtag);
65 const char * tag = String_val(vtag);
66 OBJ_VAL(vbuilder)->open_tag(std::string(tag));
67 CAMLreturn (Val_unit);
70 extern "C" value caml_xml_tree_builder_close_tag(value vbuilder, value vtag)
72 CAMLparam2(vbuilder, vtag);
73 const char * tag = String_val(vtag);
74 OBJ_VAL(vbuilder)->close_tag(std::string(tag));
75 CAMLreturn (Val_unit);
78 extern "C" value caml_xml_tree_builder_text(value vbuilder, value vtext)
80 CAMLparam2(vbuilder, vtext);
81 const char * text = String_val(vtext);
82 OBJ_VAL(vbuilder)->text(std::string(text));
83 CAMLreturn (Val_unit);