next up previous index
Next: System operations Up: Miscellaneous Previous: 2-d matrices   Index

Graphs and partial orders

In graph.cecil:

abstract object graph_node[Node <= graph_node[Node,Edge],
                           Edge <= graph_edge[Node,Edge]]
                isa comparable[graph_node[Node,Edge]];
  field in_edges (@:graph_node[`Node,`Edge]):m_set[Edge];
  field out_edges(@:graph_node[`Node,`Edge]):m_set[Edge];
  signature table_key(graph_node[`Node,`Edge]):string;
abstract object graph_edge[Node <= graph_node[Node,Edge],
                           Edge <= graph_edge[Node,Edge]]
                isa comparable[graph_edge[Node,Edge]];
  var field from_node(@:graph_edge[`Node,`Edge]):Node;
  var field to_node(@:graph_edge[`Node,`Edge]):Node;
  method =(e1@:graph_edge[`Node,`Edge], e2@:graph_edge[Node,Edge]):bool;
  method add_edge(e@:`Edge <= graph_edge[`Node,`Edge]):void;
  method remove_edge(e@:`Edge <= graph_edge[`Node,`Edge]):void;
abstract object graph[Node <= graph_node[Node,Edge],
                      Edge <= graph_edge[Node,Edge]];
  var field nodes(@:graph[`Node,`Edge]):m_removable_table[string,Node];
  method add_node(g@:graph[`Node,`Edge], node:Node):void;
  method remove_node(g@:graph[`Node,`Edge], node:Node):void;
  method add_edge(g@:graph[`Node,`Edge], e:Edge):void;
  method remove_edge(g@:graph[`Node,`Edge], e:Edge):void;
  method print_header(g@:graph[`Node,`Edge]):string;
  method print_headers(g@:graph[`Node,`Edge]):string;
  method print_string(g@:graph[`Node,`Edge]):string;
  method print(g@:graph[`Node,`Edge]):void;
In partial-order.cecil:

abstract object partial_order_node[Node <= partial_order_node[Node]]
                isa graph_node[Node,partial_order_edge[Node]],
                    partially_ordered[partial_order_node[Node]],
                    hashable[partial_order_node[Node]];
  var field marked(@:partial_order_node[`Node]):bool;
  method is_top(t@:partial_order_node[`Node]):bool;
  method is_bottom(t@:partial_order_node[`Node]):bool;
  method up_nodes_do(t@:partial_order_node[`Node],
                     bl:&(Node):void):void;
  method down_nodes_do(t@:partial_order_node[`Node],
                       bl:&(Node):void):void;
  method traverse_up(t@:`Node <= partial_order_node[Node],
                     cl:&(Node):void):void;
  method traverse_down(t@:`Node <= partial_order_node[`Node],
                       cl:&(Node):void):void;
  method order_print_string(t@:partial_order_node[`Node]):string;
template object partial_order_edge[Node <= partial_order_node[Node]]
                isa graph_edge[Node,partial_order_edge[Node]];
  method new_partial_order_edge(f@:`Node <= partial_order_node[Node],
                                t:Node):partial_order_edge[Node];
template object partial_order[Node <= partial_order_node[Node]];
  field nodes(@:partial_order[`Node]):m_set[Node];
  field tops(@:partial_order[`Node]):m_set[Node];
  field bottoms(@:partial_order[`Node]):m_set[Node];
  method add_node(t@:partial_order[`Node], node:Node):void;
  method add_partial_order_edges(t@:partial_order[`Node]):void;
  method add_edge(t@:partial_order[`Node], e:partial_order_edge[Node]):void;
  method remove_edge(t@:partial_order[`Node],
                     e:partial_order_edge[Node]):void;
  method remove_node(t@:partial_order[`Node], node:Node):void;
  method top_down_do(t@:partial_order[`Node], cl:&(Node):void):void;
  method bottom_up_do(t@:partial_order[`Node], cl:&(Node):void):void;
  method print_header(g@:partial_order[`Node]):string;
  method print_headers(t@:partial_order[`Node]):string;
  method print_string(t@:partial_order[`Node]):string;
  method print(t@:partial_order[`Node]):void;
  method clear_marks(g@:partial_order[`Node]):void;
  method new_partial_order[Node <= partial_order_node[Node]]
                          ():partial_order[Node];


next up previous index
Next: System operations Up: Miscellaneous Previous: 2-d matrices   Index

Cecil/Vortex Project