src/Pure/PIDE/document.ML
changeset 50862 5fc8b83322f5
parent 50201 c26369c9eda6
child 51268 fcc4b89a600d
--- a/src/Pure/PIDE/document.ML	Sun Jan 13 15:04:55 2013 +0100
+++ b/src/Pure/PIDE/document.ML	Sun Jan 13 19:45:32 2013 +0100
@@ -71,7 +71,7 @@
   perspective: perspective,  (*visible commands, last*)
   entries: (exec_id * exec) option Entries.T * bool,  (*command entries with excecutions, stable*)
   result: exec option}  (*result of last execution*)
-and version = Version of node Graph.T  (*development graph wrt. static imports*)
+and version = Version of node String_Graph.T  (*development graph wrt. static imports*)
 with
 
 fun make_node (header, perspective, entries, result) =
@@ -134,9 +134,10 @@
 fun set_result result =
   map_node (fn (header, perspective, entries, _) => (header, perspective, entries, result));
 
-fun get_node nodes name = Graph.get_node nodes name handle Graph.UNDEF _ => empty_node;
-fun default_node name = Graph.default_node (name, empty_node);
-fun update_node name f = default_node name #> Graph.map_node name f;
+fun get_node nodes name = String_Graph.get_node nodes name
+  handle String_Graph.UNDEF _ => empty_node;
+fun default_node name = String_Graph.default_node (name, empty_node);
+fun update_node name f = default_node name #> String_Graph.map_node name f;
 
 
 (* node edits and associated executions *)
@@ -182,7 +183,7 @@
 
 (* version operations *)
 
-val empty_version = Version Graph.empty;
+val empty_version = Version String_Graph.empty;
 
 fun nodes_of (Version nodes) = nodes;
 val node_of = get_node o nodes_of;
@@ -204,12 +205,12 @@
             |> default_node name
             |> fold default_node imports;
           val nodes2 = nodes1
-            |> Graph.Keys.fold
-                (fn dep => Graph.del_edge (dep, name)) (Graph.imm_preds nodes1 name);
+            |> String_Graph.Keys.fold
+                (fn dep => String_Graph.del_edge (dep, name)) (String_Graph.imm_preds nodes1 name);
           val (nodes3, errors2) =
-            (Graph.add_deps_acyclic (name, imports) nodes2, errors1)
-              handle Graph.CYCLES cs => (nodes2, errors1 @ map cycle_msg cs);
-        in Graph.map_node name (set_header (master, header, errors2)) nodes3 end
+            (String_Graph.add_deps_acyclic (name, imports) nodes2, errors1)
+              handle String_Graph.CYCLES cs => (nodes2, errors1 @ map cycle_msg cs);
+        in String_Graph.map_node name (set_header (master, header, errors2)) nodes3 end
     | Perspective perspective => update_node name (set_perspective perspective) nodes);
 
 fun put_node (name, node) (Version nodes) =
@@ -294,7 +295,7 @@
     val commands' =
       (versions', Inttab.empty) |->
         Inttab.fold (fn (_, version) => nodes_of version |>
-          Graph.fold (fn (_, (node, _)) => node |>
+          String_Graph.fold (fn (_, (node, _)) => node |>
             iterate_entries (fn ((_, id), _) =>
               SOME o Inttab.insert (K true) (id, the_command state id))));
   in (versions', commands', execution) end);
@@ -339,7 +340,7 @@
         {name = "execution", group = SOME group, deps = [], pri = ~2, interrupts = true}
         (fn () =>
          (OS.Process.sleep (seconds 0.02);
-          nodes_of (the_version state version_id) |> Graph.schedule
+          nodes_of (the_version state version_id) |> String_Graph.schedule
             (fn deps => fn (name, node) =>
               if not (visible_node node) andalso finished_theory node then
                 Future.value ()
@@ -366,13 +367,13 @@
 fun make_required nodes =
   let
     val all_visible =
-      Graph.fold (fn (a, (node, _)) => visible_node node ? cons a) nodes []
-      |> Graph.all_preds nodes
+      String_Graph.fold (fn (a, (node, _)) => visible_node node ? cons a) nodes []
+      |> String_Graph.all_preds nodes
       |> map (rpair ()) |> Symtab.make;
 
     val required =
       Symtab.fold (fn (a, ()) =>
-        exists (Symtab.defined all_visible) (Graph.immediate_succs nodes a) ?
+        exists (Symtab.defined all_visible) (String_Graph.immediate_succs nodes a) ?
           Symtab.update (a, ())) all_visible Symtab.empty;
   in Symtab.defined required end;
 
@@ -476,7 +477,7 @@
 
     val _ = timeit "Document.terminate_execution" (fn () => terminate_execution state);
     val updated = timeit "Document.update" (fn () =>
-      nodes |> Graph.schedule
+      nodes |> String_Graph.schedule
         (fn deps => fn (name, node) =>
           (singleton o Future.forks)
             {name = "Document.update", group = NONE,