next up previous contents index
Next: System operations Up: Miscellaneous Previous: matrix

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@graph_edge[`Node,`Edge]:`Edge <= graph_edge[`Node,`Edge] 
):void;
method remove_edge(e@graph_edge[`Node,`Edge]:`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 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@partial_order_node[`Node] 
:`Node <= partial_order_node[Node],
cl:&(Node):void):void;
method traverse_down(t@partial_order_node[`Node] 
:`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@partial_order_node[`Node] 
:`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 contents index
Next: System operations Up: Miscellaneous Previous: matrix

The Cecil project