summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
6d471b1)
boundary. This causes problem when calling optimized C code (in e.g. libcds)
where g++ assumed that all stacks are alligned on a 16 byte boundary (to use
instructions such as movaps freely).
-extern "C" value sxsi_cpp_init(value unit)
+ML_BINDING value sxsi_cpp_init(value unit)
{
struct rlimit rlim;
init_exception();
{
struct rlimit rlim;
init_exception();
+//Must be used in front of every function that is called from OCaml.
+
+#define ML_BINDING extern "C" __attribute__ ((force_align_arg_pointer))
+
void register_custom_(char* name,
size_t size,
void register_custom_(char* name,
size_t size,
void sxsi_raise_msg(const char * msg);
void sxsi_raise_msg(const char * msg);
-extern "C" value sxsi_cpp_init(value unit);
-
+ML_BINDING value sxsi_cpp_init(value unit);
return Obj_val<xml_tree_builder*>(v);
}
return Obj_val<xml_tree_builder*>(v);
}
-extern "C" value caml_xml_tree_builder_create(value unit)
+ML_BINDING value caml_xml_tree_builder_create(value unit)
{
CAMLparam1(unit);
CAMLlocal1(result);
{
CAMLparam1(unit);
CAMLlocal1(result);
-extern "C" value caml_xml_tree_builder_open_document(value vbuilder,
+ML_BINDING value caml_xml_tree_builder_open_document(value vbuilder,
value vsrate,
value vdtc,
value vidxtype)
value vsrate,
value vdtc,
value vidxtype)
-extern "C" value caml_xml_tree_builder_close_document(value vbuilder)
+
+ML_BINDING value caml_xml_tree_builder_close_document(value vbuilder)
+
{
CAMLparam1(vbuilder);
CAMLlocal1(result);
{
CAMLparam1(vbuilder);
CAMLlocal1(result);
-extern "C" value caml_xml_tree_builder_open_tag(value vbuilder, value vtag)
+ML_BINDING value caml_xml_tree_builder_open_tag(value vbuilder, value vtag)
{
CAMLparam2(vbuilder, vtag);
const char * tag = String_val(vtag);
{
CAMLparam2(vbuilder, vtag);
const char * tag = String_val(vtag);
-extern "C" value caml_xml_tree_builder_close_tag(value vbuilder, value vtag)
+ML_BINDING value caml_xml_tree_builder_close_tag(value vbuilder, value vtag)
{
CAMLparam2(vbuilder, vtag);
const char * tag = String_val(vtag);
{
CAMLparam2(vbuilder, vtag);
const char * tag = String_val(vtag);
-extern "C" value caml_xml_tree_builder_text(value vbuilder, value vtext)
+ML_BINDING value caml_xml_tree_builder_text(value vbuilder, value vtext)
{
CAMLparam2(vbuilder, vtext);
const char * text = String_val(vtext);
{
CAMLparam2(vbuilder, vtext);
const char * text = String_val(vtext);
return static_cast<xml_tree::tag_t>(Int_val(i));
}
return static_cast<xml_tree::tag_t>(Int_val(i));
}
-extern "C" value caml_xml_tree_save(value tree, value fd, value prefix)
+ML_BINDING value caml_xml_tree_save(value tree, value fd, value prefix)
{
CAMLparam3(tree, fd, prefix);
XMLTREE(tree)->save(Int_val(fd), String_val(prefix));
CAMLreturn (Val_unit);
}
{
CAMLparam3(tree, fd, prefix);
XMLTREE(tree)->save(Int_val(fd), String_val(prefix));
CAMLreturn (Val_unit);
}
caml_xml_tree_load(value fd, value prefix, value load_tc, value sf)
{
CAMLparam4(fd, prefix, load_tc, sf);
caml_xml_tree_load(value fd, value prefix, value load_tc, value sf)
{
CAMLparam4(fd, prefix, load_tc, sf);
-NoAlloc extern "C" value caml_xml_tree_root(value tree)
+NoAlloc ML_BINDING value caml_xml_tree_root(value tree)
{
return (Val_int(XMLTREE(tree)->root()));
}
{
return (Val_int(XMLTREE(tree)->root()));
}
-NoAlloc extern "C" value caml_xml_tree_size(value tree)
+NoAlloc ML_BINDING value caml_xml_tree_size(value tree)
{
return (Val_int(XMLTREE(tree)->size()));
}
{
return (Val_int(XMLTREE(tree)->size()));
}
-NoAlloc extern "C" value caml_xml_tree_num_tags(value tree)
+NoAlloc ML_BINDING value caml_xml_tree_num_tags(value tree)
{
return (Val_int(XMLTREE(tree)->num_tags()));
}
{
return (Val_int(XMLTREE(tree)->num_tags()));
}
-NoAlloc extern "C" value caml_xml_tree_subtree_size(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_subtree_size(value tree, value node)
{
return (Val_int(XMLTREE(tree)->subtree_size(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->subtree_size(TREENODE(node))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_subtree_tags(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->subtree_tags(TREENODE(node),
TAG(tag))));
}
caml_xml_tree_subtree_tags(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->subtree_tags(TREENODE(node),
TAG(tag))));
}
-NoAlloc extern "C" value caml_xml_tree_subtree_elements(value tree,
+NoAlloc ML_BINDING value caml_xml_tree_subtree_elements(value tree,
value node)
{
return (Val_int(XMLTREE(tree)->subtree_elements(TREENODE(node))));
}
value node)
{
return (Val_int(XMLTREE(tree)->subtree_elements(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_is_leaf(value tree, value node){
+NoAlloc ML_BINDING value caml_xml_tree_is_leaf(value tree, value node){
return (Val_bool(XMLTREE(tree)->is_leaf(TREENODE(node))));
}
return (Val_bool(XMLTREE(tree)->is_leaf(TREENODE(node))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_is_ancestor(value tree, value node1, value node2)
{
return (Val_bool(XMLTREE(tree)->is_ancestor(TREENODE(node1),
TREENODE(node2))));
}
caml_xml_tree_is_ancestor(value tree, value node1, value node2)
{
return (Val_bool(XMLTREE(tree)->is_ancestor(TREENODE(node1),
TREENODE(node2))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_is_child(value tree, value node1, value node2)
{
return (Val_bool(XMLTREE(tree)->is_child(TREENODE(node1),
TREENODE(node2))));
}
caml_xml_tree_is_child(value tree, value node1, value node2)
{
return (Val_bool(XMLTREE(tree)->is_child(TREENODE(node1),
TREENODE(node2))));
}
-NoAlloc extern "C" value caml_xml_tree_is_first_child(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_is_first_child(value tree, value node)
{
return (Val_bool(XMLTREE(tree)->is_first_child(TREENODE(node))));
}
{
return (Val_bool(XMLTREE(tree)->is_first_child(TREENODE(node))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_is_right_descendant(value tree, value x, value y)
{
return (Val_bool(XMLTREE(tree)->is_right_descendant(TREENODE(x),
TREENODE(y))));
}
caml_xml_tree_is_right_descendant(value tree, value x, value y)
{
return (Val_bool(XMLTREE(tree)->is_right_descendant(TREENODE(x),
TREENODE(y))));
}
-NoAlloc extern "C" value caml_xml_tree_num_children(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_num_children(value tree, value node)
{
return (Val_int(XMLTREE(tree)->num_children(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->num_children(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_child_pos(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_child_pos(value tree, value node)
{
return (Val_int(XMLTREE(tree)->child_pos(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->child_pos(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_depth(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_depth(value tree, value node)
{
return (Val_int(XMLTREE(tree)->depth(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->depth(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_preorder(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_preorder(value tree, value node)
{
return (Val_int(XMLTREE(tree)->preorder(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->preorder(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_postorder(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_postorder(value tree, value node)
{
return (Val_int(XMLTREE(tree)->postorder(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->postorder(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_tag(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_tag(value tree, value node)
{
return (Val_int(XMLTREE(tree)->tag(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->tag(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_parent(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_parent(value tree, value node)
{
return (Val_int(XMLTREE(tree)->parent(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->parent(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_child(value tree, value node, value idx)
+NoAlloc ML_BINDING value caml_xml_tree_child(value tree, value node, value idx)
{
return (Val_int(XMLTREE(tree)->child(TREENODE(node), Int_val(idx))));
}
{
return (Val_int(XMLTREE(tree)->child(TREENODE(node), Int_val(idx))));
}
-NoAlloc extern "C" value caml_xml_tree_first_child(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_first_child(value tree, value node)
{
return (Val_int(XMLTREE(tree)->first_child(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->first_child(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_first_element(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_first_element(value tree, value node)
{
return (Val_int(XMLTREE(tree)->first_element(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->first_element(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_last_child(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_last_child(value tree, value node)
{
return (Val_int(XMLTREE(tree)->last_child(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->last_child(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_next_sibling(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_next_sibling(value tree, value node)
{
return (Val_int(XMLTREE(tree)->next_sibling(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->next_sibling(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_next_element(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_next_element(value tree, value node)
{
return (Val_int(XMLTREE(tree)->next_element(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->next_element(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_prev_sibling(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_prev_sibling(value tree, value node)
{
return (Val_int(XMLTREE(tree)->prev_sibling(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->prev_sibling(TREENODE(node))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_tagged_child(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_child(TREENODE(node),
TAG(tag))));
}
caml_xml_tree_tagged_child(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_child(TREENODE(node),
TAG(tag))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_select_child(value tree, value node, value tags)
{
return (Val_int(XMLTREE(tree)->select_child(TREENODE(node), TAGLIST(tags))));
}
caml_xml_tree_select_child(value tree, value node, value tags)
{
return (Val_int(XMLTREE(tree)->select_child(TREENODE(node), TAGLIST(tags))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_tagged_sibling(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_sibling(TREENODE(node),
TAG(tag))));
}
caml_xml_tree_tagged_sibling(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_sibling(TREENODE(node),
TAG(tag))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_select_sibling(value tree, value node, value tags)
{
return (Val_int(XMLTREE(tree)->select_sibling(TREENODE(node),
TAGLIST(tags))));
}
caml_xml_tree_select_sibling(value tree, value node, value tags)
{
return (Val_int(XMLTREE(tree)->select_sibling(TREENODE(node),
TAGLIST(tags))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_tagged_descendant(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_descendant(TREENODE(node),
TAG(tag))));
}
caml_xml_tree_tagged_descendant(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_descendant(TREENODE(node),
TAG(tag))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_tagged_next(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_next(TREENODE(node),
TAG(tag))));
}
caml_xml_tree_tagged_next(value tree, value node, value tag)
{
return (Val_int(XMLTREE(tree)->tagged_next(TREENODE(node),
TAG(tag))));
}
-NoAlloc extern "C" value
+NoAlloc ML_BINDING value
caml_xml_tree_select_descendant(value tree, value node, value tags)
{
return (Val_int(XMLTREE(tree)->select_descendant(TREENODE(node),
TAGLIST(tags))));
}
caml_xml_tree_select_descendant(value tree, value node, value tags)
{
return (Val_int(XMLTREE(tree)->select_descendant(TREENODE(node),
TAGLIST(tags))));
}
-NoAlloc extern "C" value caml_xml_tree_tagged_following_before(value tree,
+NoAlloc ML_BINDING value caml_xml_tree_tagged_following_before(value tree,
value node,
value tag,
value closing)
value node,
value tag,
value closing)
-NoAlloc extern "C" value caml_xml_tree_select_following_before(value tree,
+NoAlloc ML_BINDING value caml_xml_tree_select_following_before(value tree,
value node,
value tags,
value closing)
value node,
value tags,
value closing)
-extern "C" value caml_xml_tree_get_text_collection(value tree)
+ML_BINDING value caml_xml_tree_get_text_collection(value tree)
{
CAMLparam1(tree);
CAMLlocal1(text);
{
CAMLparam1(tree);
CAMLlocal1(text);
-NoAlloc extern "C" value caml_xml_tree_closing(value tree, value node)
+NoAlloc ML_BINDING value caml_xml_tree_closing(value tree, value node)
{
return (Val_int(XMLTREE(tree)->closing(TREENODE(node))));
}
{
return (Val_int(XMLTREE(tree)->closing(TREENODE(node))));
}
-NoAlloc extern "C" value caml_xml_tree_nullt(value unit){
+NoAlloc ML_BINDING value caml_xml_tree_nullt(value unit){
return (Val_int(xml_tree::NIL));
}
return (Val_int(xml_tree::NIL));
}
-extern "C" value caml_xml_tree_print(value tree, value node, value fd)
+ML_BINDING value caml_xml_tree_print(value tree, value node, value fd)
{
CAMLparam3(tree, node, fd);
XMLTREE(tree)->print(TREENODE(node), Int_val(fd));
{
CAMLparam3(tree, node, fd);
XMLTREE(tree)->print(TREENODE(node), Int_val(fd));
-extern "C" value caml_xml_tree_get_tag_name(value tree, value tag)
+ML_BINDING value caml_xml_tree_get_tag_name(value tree, value tag)
{
CAMLparam2(tree, tag);
CAMLlocal1(res);
{
CAMLparam2(tree, tag);
CAMLlocal1(res);
-NoAlloc extern "C" value caml_xml_tree_flush(value tree, value fd)
+NoAlloc ML_BINDING value caml_xml_tree_flush(value tree, value fd)
{
XMLTREE(tree)->flush(Int_val(fd));
return Val_unit;
}
{
XMLTREE(tree)->flush(Int_val(fd));
return Val_unit;
}
-extern "C" value caml_xml_tree_register_tag(value tree, value str)
+ML_BINDING value caml_xml_tree_register_tag(value tree, value str)
{
CAMLparam2(tree, str);
value res;
{
CAMLparam2(tree, str);
value res;
}
#define BV_QUERY(pref, Pref) \
}
#define BV_QUERY(pref, Pref) \
- extern "C" value caml_text_collection_## pref ##_bv(value tree, value str, value dobvv){ \
+ ML_BINDING value caml_text_collection_## pref ##_bv(value tree, value str, value dobvv){ \
CAMLparam3(tree, str, dobvv); \
CAMLlocal3(res, res_bv, res_array); \
int j; \
CAMLparam3(tree, str, dobvv); \
CAMLlocal3(res, res_bv, res_array); \
int j; \
}; \
caml_initialize(&Field(res_array, i), Val_int(j)); \
}; \
}; \
caml_initialize(&Field(res_array, i), Val_int(j)); \
}; \
- fprintf(stderr, "Raw results: %lu, Sorted reulsts %lu\n", uresults.size(), results.size()); \
+ fprintf(stderr, "Raw results: %zu, Sorted results %zu\n", uresults.size(), results.size()); \
free(cstr); \
res = caml_alloc(2, 0); \
Store_field(res, 0, res_bv); \
free(cstr); \
res = caml_alloc(2, 0); \
Store_field(res, 0, res_bv); \