1 #ifndef _newgen_graph_included
2 #define _newgen_graph_included
3 #define _gen_graph_start 10
10 #if !defined(_newgen_vertex_label_domain_defined_)
11 #define _newgen_vertex_label_domain_defined_
12 #define newgen_vertex_label(p) (p)
13 #define VERTEX_LABEL_NEWGEN_EXTERNAL (_gen_graph_start+0)
14 #define VERTEX_LABEL_NEWGEN_DOMAIN (VERTEX_LABEL_NEWGEN_EXTERNAL)
15 #define vertex_label_NEWGEN_DOMAIN (VERTEX_LABEL_NEWGEN_EXTERNAL)
18 #if !defined(_newgen_arc_label_domain_defined_)
19 #define _newgen_arc_label_domain_defined_
20 #define newgen_arc_label(p) (p)
21 #define ARC_LABEL_NEWGEN_EXTERNAL (_gen_graph_start+1)
22 #define ARC_LABEL_NEWGEN_DOMAIN (ARC_LABEL_NEWGEN_EXTERNAL)
23 #define arc_label_NEWGEN_DOMAIN (ARC_LABEL_NEWGEN_EXTERNAL)
26 #define graph_domain (_gen_graph_start+2)
27 #if !defined(_newgen_graph_domain_defined_)
28 #define _newgen_graph_domain_defined_
29 #define GRAPH_NEWGEN_DOMAIN (graph_domain)
30 #define graph_NEWGEN_DOMAIN (graph_domain)
34 #define successor_domain (_gen_graph_start+3)
35 #if !defined(_newgen_successor_domain_defined_)
36 #define _newgen_successor_domain_defined_
37 #define SUCCESSOR_NEWGEN_DOMAIN (successor_domain)
38 #define successor_NEWGEN_DOMAIN (successor_domain)
42 #define vertex_domain (_gen_graph_start+4)
43 #if !defined(_newgen_vertex_domain_defined_)
44 #define _newgen_vertex_domain_defined_
45 #define VERTEX_NEWGEN_DOMAIN (vertex_domain)
46 #define vertex_NEWGEN_DOMAIN (vertex_domain)
54 #define GRAPH(x) ((graph)((x).p))
55 #define graph_CAST(x) GRAPH(x)
56 #define GRAPH_CAST(x) GRAPH(x)
57 #define GRAPH_(x) ((x).e)
58 #define GRAPH_TYPE graph
59 #define graph_TYPE graph
60 #define graph_undefined ((graph)gen_chunk_undefined)
61 #define graph_undefined_p(x) ((x)==graph_undefined)
68 #define gen_GRAPH_cons gen_graph_cons
81 #define graph_domain_number(x) ((x)->_type_)
82 #define graph_vertices(x) ((x)->_graph_holder_)
86 #define SUCCESSOR(x) ((successor)((x).p))
87 #define successor_CAST(x) SUCCESSOR(x)
88 #define SUCCESSOR_CAST(x) SUCCESSOR(x)
89 #define SUCCESSOR_(x) ((x).e)
90 #define SUCCESSOR_TYPE successor
91 #define successor_TYPE successor
92 #define successor_undefined ((successor)gen_chunk_undefined)
93 #define successor_undefined_p(x) ((x)==successor_undefined)
100 #define gen_SUCCESSOR_cons gen_successor_cons
114 #define successor_domain_number(x) ((x)->_type_)
115 #define successor_arc_label_(x) successor_arc_label(x)
116 #define successor_arc_label(x) ((x)->_successor_arc_label_)
117 #define successor_vertex_(x) successor_vertex(x)
118 #define successor_vertex(x) ((x)->_successor_vertex_)
122 #define VERTEX(x) ((vertex)((x).p))
123 #define vertex_CAST(x) VERTEX(x)
124 #define VERTEX_CAST(x) VERTEX(x)
125 #define VERTEX_(x) ((x).e)
126 #define VERTEX_TYPE vertex
127 #define vertex_TYPE vertex
128 #define vertex_undefined ((vertex)gen_chunk_undefined)
129 #define vertex_undefined_p(x) ((x)==vertex_undefined)
136 #define gen_VERTEX_cons gen_vertex_cons
150 #define vertex_domain_number(x) ((x)->_type_)
151 #define vertex_vertex_label_(x) vertex_vertex_label(x)
152 #define vertex_vertex_label(x) ((x)->_vertex_vertex_label_)
153 #define vertex_successors_(x) vertex_successors(x)
154 #define vertex_successors(x) ((x)->_vertex_successors_)
156 #define graph_spec "\
158 external vertex_label;\n\
159 external arc_label;\n\
160 graph = vertices:vertex*;\n\
161 successor = arc_label:arc_label x vertex:vertex;\n\
162 vertex = vertex_label:vertex_label x successors:successor*;\n\
void write_graph(FILE *, graph)
list gen_graph_cons(graph, list)
bool graph_consistent_p(graph)
void graph_assign_contents(graph, graph)
successor make_successor(arc_label, vertex)
vertex copy_vertex(vertex)
VERTEX.
struct _newgen_struct_graph_ * graph
void free_successor(successor)
void graph_non_recursive_free(graph)
vertex check_vertex(vertex)
void vertex_non_recursive_free(vertex)
void successor_non_recursive_free(successor)
struct _newgen_struct_successor_ * successor
void write_vertex(FILE *, vertex)
vertex read_vertex(FILE *)
successor copy_successor(successor)
SUCCESSOR.
void successor_assign_contents(successor, successor)
vertex make_vertex(vertex_label, list)
void vertex_assign_contents(vertex, vertex)
successor check_successor(successor)
bool successor_defined_p(successor)
list gen_vertex_cons(vertex, list)
bool vertex_consistent_p(vertex)
bool vertex_defined_p(vertex)
graph copy_graph(graph)
GRAPH.
bool successor_consistent_p(successor)
bool graph_defined_p(graph)
list gen_successor_cons(successor, list)
struct _newgen_struct_vertex_ * vertex
void write_successor(FILE *, successor)
successor read_successor(FILE *)
vertex _successor_vertex_
arc_label:arc_label
arc_label _successor_arc_label_
vertex_label _vertex_vertex_label_
list _vertex_successors_
vertex_label:vertex_label
The structure used to build lists in NewGen.