Add a generic deque module.
[tatoo.git] / src / naive_node_list.ml
index c148732..91d07e0 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-
-type node = Naive_tree.node
-type cell = { node : node;
-              mutable next : cell }
-
-
-type t = { mutable length : int;
-           mutable head : cell;
-           mutable last : cell; }
-
-let rec nil = { node = Naive_tree.nil;
-                next = nil }
-
-let create () = { length = 0;
-                  head = nil;
-                  last = nil }
-
-let iter f l =
-  let rec loop c =
-    if c != nil then begin
-      f c.node;
-      loop c.next
-    end
-  in
-  loop l.head
-
-
-let length l = l.length
-
-
-let add n l =
-  let ncell = { node = n;
-                next = nil }
-  in
-  if l.last == nil then
-    { length = 1;
-      head = ncell;
-      last = ncell }
-  else
-    let () = l.last.next <- ncell in
-    { length = l.length + 1;
-      head = l.head;
-      last = ncell }
+include Deque.Make (struct type t = Naive_tree.node end)