From 609094fe14ca90cd5417ee22de621f76d1d0ec94 Mon Sep 17 00:00:00 2001 From: kim Date: Fri, 21 Aug 2009 00:29:10 +0000 Subject: [PATCH] Various cleanups git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/xpathcomp@558 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- ata.ml | 22 +++++++++++----------- results.c | 2 +- tree.ml | 7 +++++-- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/ata.ml b/ata.ml index 77d5008..4ea2067 100644 --- a/ata.ml +++ b/ata.ml @@ -528,13 +528,13 @@ let tags_of_state a q = module GResult(Doc : sig val doc : Tree.t end) = struct type bits type elt = [` Tree] Tree.node - external create_empty : int -> bits = "caml_result_set_create" - external set : bits -> int -> unit = "caml_result_set_set" - external next : bits -> int -> int = "caml_result_set_next" - external count : bits -> int = "caml_result_set_count" - external clear : bits -> elt -> elt -> unit = "caml_result_set_clear" + external create_empty : int -> bits = "caml_result_set_create" "noalloc" + external set : bits -> int -> unit = "caml_result_set_set" "noalloc" + external next : bits -> int -> int = "caml_result_set_next" "noalloc" + external count : bits -> int = "caml_result_set_count" "noalloc" + external clear : bits -> elt -> elt -> unit = "caml_result_set_clear" "noalloc" - external set_tag_bits : bits -> Tag.t -> Tree.t -> elt -> elt = "caml_set_tag_bits" + external set_tag_bits : bits -> Tag.t -> Tree.t -> elt -> elt = "caml_set_tag_bits" "noalloc" type t = { segments : elt list; bits : bits; @@ -1075,10 +1075,10 @@ END (fun t _ -> eval_fold2_slist fl_list t (Tree.tag tree t) empty_res empty_res) | _,`NIL -> ( match f_kind with - |`TAG(tag') -> + (*|`TAG(tag') -> let default = fun t _ -> eval_fold2_slist fl_list t (Tree.tag tree t) empty_res (loop_tag tag' (first t) llist t ) - in + in default (* let cf = SList.hd llist in if (slot_size == 1) && StateSet.is_singleton cf then @@ -1088,7 +1088,7 @@ END then RS.mk_quick_tag_loop default llist 1 tree tag' else default - else default + else default *) *) | _ -> (fun t _ -> eval_fold2_slist fl_list t (Tree.tag tree t) empty_res (loop (first t) llist t )) @@ -1096,13 +1096,13 @@ END | `NIL,_ -> ( match n_kind with |`TAG(tag') -> - (*if SList.equal rlist slist && tag == tag' then + if SList.equal rlist slist && tag == tag' then let rec loop t ctx = if t == Tree.nil then empty_res else let res2 = loop (next t ctx) ctx in eval_fold2_slist fl_list t tag res2 empty_res in loop - else *) + else (fun t ctx -> eval_fold2_slist fl_list t (Tree.tag tree t) (loop_tag tag' (next t ctx) rlist ctx ) empty_res) diff --git a/results.c b/results.c index 1f1deda..19480fd 100644 --- a/results.c +++ b/results.c @@ -184,9 +184,9 @@ static int nextLarger (int *tree, int n, int p, int pos, int pot) { int answ; if (!getBit(tree,pos)) return -1; // no answer - pot--; pos = (pos<<1)+1; if (pos >= n) return 0; // when n is not a power of 2, missing leaves + pot--; if ((p>>pot) == 0) // p goes left { answ = nextLarger(tree,n,p&~(1< tree_tagged_descendant t.doc n tag +let tagged_descendant t tag = + let doc = t.doc in (); fun n -> tree_tagged_descendant doc n tag let select_descendant t = fun ts -> let v = (ptset_to_vector ts) in (); fun n -> tree_select_descendant t.doc n v -let tagged_following_below t tag = (); fun n ctx -> tree_tagged_following_below t.doc n tag ctx +let tagged_following_below t tag = + let doc = t.doc in + (); fun n ctx -> tree_tagged_following_below doc n tag ctx let select_following_below t = fun ts -> let v = (ptset_to_vector ts) in (); -- 2.17.1