X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fnaive_node_list.ml;fp=src%2Fnaive_node_list.ml;h=91d07e0614d5e8aba6cae357763cc6d511359595;hp=b6f0ae458e67bbb3d08156913f6b6bf6b4848d22;hb=a96c64d15866719b4c8eb6d98ad7f1fc948e7636;hpb=e3ad6d6f098809af95ddaf8b1e9bc4ec5cb7b0f4 diff --git a/src/naive_node_list.ml b/src/naive_node_list.ml index b6f0ae4..91d07e0 100644 --- a/src/naive_node_list.ml +++ b/src/naive_node_list.ml @@ -13,76 +13,4 @@ (* *) (***********************************************************************) - -type node = Naive_tree.node -type cell = { node : node; - mutable next : cell } - -type iterator = 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 is_empty l = l.head == nil - -let add n l = - let ncell = { node = n; - next = nil } - in - if l.head == nil then begin - l.head <- ncell; - l.last <- ncell; - l.length <- 1 - end else begin - l.last.next <- ncell; - l.last <- ncell; - l.length <- l.length + 1 - end - -let push_back n l = add n l -let push_front n l = - let ncell = { node = n; - next = l.head } - in - if l.head == nil then begin - l.head <- ncell; - l.last <- ncell; - l.length <- 1; - end else begin - l.head <- ncell; - l.length <- l.length + 1; - end - -let head l = l.head -let last l = l.last -let next i = i.next -let value i = i.node -let finished i = i == nil - -let copy l = - let rec loop l2 i = - if finished i then l2 else begin - add (value i) l2; - loop l2 (next i) - end - in - loop (create ()) (head l) +include Deque.Make (struct type t = Naive_tree.node end)