PIPS
graph.h
Go to the documentation of this file.
1 #ifndef _newgen_graph_included
2 #define _newgen_graph_included
3 #define _gen_graph_start 10
4 /*
5  * THIS FILE HAS BEEN AUTOMATICALLY GENERATED BY NEWGEN.
6  *
7  * PLEASE DO NOT MODIFY IT.
8  */
9 
10 #if !defined(_newgen_vertex_label_domain_defined_)
11 #define _newgen_vertex_label_domain_defined_
12 #define newgen_vertex_label(p) (p) /* old hack compatible */
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)
16 #endif /* _newgen_vertex_label_domain_defined_ */
17 
18 #if !defined(_newgen_arc_label_domain_defined_)
19 #define _newgen_arc_label_domain_defined_
20 #define newgen_arc_label(p) (p) /* old hack compatible */
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)
24 #endif /* _newgen_arc_label_domain_defined_ */
25 
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)
31 typedef struct _newgen_struct_graph_ * graph;
32 #endif /* _newgen_graph_domain_defined_ */
33 
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)
40 #endif /* _newgen_successor_domain_defined_ */
41 
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)
47 typedef struct _newgen_struct_vertex_ * vertex;
48 #endif /* _newgen_vertex_domain_defined_ */
49 
50 
51 
52 /* GRAPH
53  */
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)
62 
63 extern graph copy_graph(graph);
64 extern void free_graph(graph);
65 extern graph check_graph(graph);
66 extern bool graph_consistent_p(graph);
67 extern bool graph_defined_p(graph);
68 #define gen_GRAPH_cons gen_graph_cons
69 extern list gen_graph_cons(graph, list);
70 extern void graph_assign_contents(graph, graph);
71 extern void graph_non_recursive_free(graph);
72 extern void write_graph(FILE*, graph);
73 extern graph read_graph(FILE*);
74 extern graph make_graph(list);
75 
79 };
80 
81 #define graph_domain_number(x) ((x)->_type_)
82 #define graph_vertices(x) ((x)->_graph_holder_)
83 
84 /* SUCCESSOR
85  */
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)
94 
96 extern void free_successor(successor);
99 extern bool successor_defined_p(successor);
100 #define gen_SUCCESSOR_cons gen_successor_cons
104 extern void write_successor(FILE*, successor);
105 extern successor read_successor(FILE*);
107 
110  arc_label _successor_arc_label_; /* arc_label:arc_label */
111  vertex _successor_vertex_; /* vertex:vertex */
112 };
113 
114 #define successor_domain_number(x) ((x)->_type_)
115 #define successor_arc_label_(x) successor_arc_label(x) /* old hack compatible */
116 #define successor_arc_label(x) ((x)->_successor_arc_label_)
117 #define successor_vertex_(x) successor_vertex(x) /* old hack compatible */
118 #define successor_vertex(x) ((x)->_successor_vertex_)
119 
120 /* VERTEX
121  */
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)
130 
131 extern vertex copy_vertex(vertex);
132 extern void free_vertex(vertex);
133 extern vertex check_vertex(vertex);
134 extern bool vertex_consistent_p(vertex);
135 extern bool vertex_defined_p(vertex);
136 #define gen_VERTEX_cons gen_vertex_cons
138 extern void vertex_assign_contents(vertex, vertex);
139 extern void vertex_non_recursive_free(vertex);
140 extern void write_vertex(FILE*, vertex);
141 extern vertex read_vertex(FILE*);
143 
146  vertex_label _vertex_vertex_label_; /* vertex_label:vertex_label */
147  list _vertex_successors_; /* successors:successor* */
148 };
149 
150 #define vertex_domain_number(x) ((x)->_type_)
151 #define vertex_vertex_label_(x) vertex_vertex_label(x) /* old hack compatible */
152 #define vertex_vertex_label(x) ((x)->_vertex_vertex_label_)
153 #define vertex_successors_(x) vertex_successors(x) /* old hack compatible */
154 #define vertex_successors(x) ((x)->_vertex_successors_)
155 
156 #define graph_spec "\
157 --NEWGEN-START 10\n\
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\
163 "
164 #endif
void write_graph(FILE *, graph)
Definition: graph.c:50
list gen_graph_cons(graph, list)
Definition: graph.c:36
bool graph_consistent_p(graph)
Definition: graph.c:29
void graph_assign_contents(graph, graph)
Definition: graph.c:39
graph make_graph(list)
Definition: graph.c:56
successor make_successor(arc_label, vertex)
Definition: graph.c:98
vertex copy_vertex(vertex)
VERTEX.
Definition: graph.c:104
struct _newgen_struct_graph_ * graph
Definition: graph.h:31
void free_successor(successor)
Definition: graph.c:65
void graph_non_recursive_free(graph)
Definition: graph.c:46
vertex check_vertex(vertex)
Definition: graph.c:110
void vertex_non_recursive_free(vertex)
Definition: graph.c:130
void free_vertex(vertex)
Definition: graph.c:107
graph read_graph(FILE *)
Definition: graph.c:53
void successor_non_recursive_free(successor)
Definition: graph.c:88
struct _newgen_struct_successor_ * successor
Definition: graph.h:39
void write_vertex(FILE *, vertex)
Definition: graph.c:134
vertex read_vertex(FILE *)
Definition: graph.c:137
successor copy_successor(successor)
SUCCESSOR.
Definition: graph.c:62
void successor_assign_contents(successor, successor)
Definition: graph.c:81
vertex make_vertex(vertex_label, list)
Definition: graph.c:140
void vertex_assign_contents(vertex, vertex)
Definition: graph.c:123
successor check_successor(successor)
Definition: graph.c:68
bool successor_defined_p(successor)
Definition: graph.c:75
list gen_vertex_cons(vertex, list)
Definition: graph.c:120
bool vertex_consistent_p(vertex)
Definition: graph.c:113
bool vertex_defined_p(vertex)
Definition: graph.c:117
graph check_graph(graph)
Definition: graph.c:26
graph copy_graph(graph)
GRAPH.
Definition: graph.c:20
bool successor_consistent_p(successor)
Definition: graph.c:71
bool graph_defined_p(graph)
Definition: graph.c:33
list gen_successor_cons(successor, list)
Definition: graph.c:78
void free_graph(graph)
Definition: graph.c:23
struct _newgen_struct_vertex_ * vertex
Definition: graph.h:47
void write_successor(FILE *, successor)
Definition: graph.c:92
successor read_successor(FILE *)
Definition: graph.c:95
#define intptr_t
Definition: stdint.in.h:294
intptr_t _type_
Definition: graph.h:77
vertex _successor_vertex_
arc_label:arc_label
Definition: graph.h:111
arc_label _successor_arc_label_
Definition: graph.h:110
vertex_label _vertex_vertex_label_
Definition: graph.h:146
list _vertex_successors_
vertex_label:vertex_label
Definition: graph.h:147
The structure used to build lists in NewGen.
Definition: newgen_list.h:41