1 #ifndef _newgen_points_to_private_included
2 #define _newgen_points_to_private_included
3 #define _gen_points_to_private_start 220
10 #if !defined(_newgen_descriptor_domain_defined_)
11 #define _newgen_descriptor_domain_defined_
12 #define DESCRIPTOR_NEWGEN_DOMAIN (descriptor_domain)
13 #define descriptor_NEWGEN_DOMAIN (descriptor_domain)
17 #if !defined(_newgen_approximation_domain_defined_)
18 #define _newgen_approximation_domain_defined_
19 #define APPROXIMATION_NEWGEN_DOMAIN (approximation_domain)
20 #define approximation_NEWGEN_DOMAIN (approximation_domain)
24 #if !defined(_newgen_statement_domain_defined_)
25 #define _newgen_statement_domain_defined_
26 #define STATEMENT_NEWGEN_DOMAIN (statement_domain)
27 #define statement_NEWGEN_DOMAIN (statement_domain)
31 #if !defined(_newgen_cell_domain_defined_)
32 #define _newgen_cell_domain_defined_
33 #define CELL_NEWGEN_DOMAIN (cell_domain)
34 #define cell_NEWGEN_DOMAIN (cell_domain)
38 #define points_to_graph_domain (_gen_points_to_private_start+0)
39 #if !defined(_newgen_points_to_graph_domain_defined_)
40 #define _newgen_points_to_graph_domain_defined_
41 #define POINTS_TO_GRAPH_NEWGEN_DOMAIN (points_to_graph_domain)
42 #define points_to_graph_NEWGEN_DOMAIN (points_to_graph_domain)
46 #define points_to_list_domain (_gen_points_to_private_start+1)
47 #if !defined(_newgen_points_to_list_domain_defined_)
48 #define _newgen_points_to_list_domain_defined_
49 #define POINTS_TO_LIST_NEWGEN_DOMAIN (points_to_list_domain)
50 #define points_to_list_NEWGEN_DOMAIN (points_to_list_domain)
54 #define points_to_domain (_gen_points_to_private_start+2)
55 #if !defined(_newgen_points_to_domain_defined_)
56 #define _newgen_points_to_domain_defined_
57 #define POINTS_TO_NEWGEN_DOMAIN (points_to_domain)
58 #define points_to_NEWGEN_DOMAIN (points_to_domain)
62 #define statement_points_to_domain (_gen_points_to_private_start+3)
63 #if !defined(_newgen_statement_points_to_domain_defined_)
64 #define _newgen_statement_points_to_domain_defined_
65 #define STATEMENT_POINTS_TO_NEWGEN_DOMAIN (statement_points_to_domain)
66 #define statement_points_to_NEWGEN_DOMAIN (statement_points_to_domain)
72 #define POINTS_TO_GRAPH(x) ((points_to_graph)((x).p))
73 #define points_to_graph_CAST(x) POINTS_TO_GRAPH(x)
74 #define POINTS_TO_GRAPH_CAST(x) POINTS_TO_GRAPH(x)
75 #define POINTS_TO_GRAPH_(x) ((x).e)
76 #define POINTS_TO_GRAPH_TYPE points_to_graph
77 #define points_to_graph_TYPE points_to_graph
78 #define points_to_graph_undefined ((points_to_graph)gen_chunk_undefined)
79 #define points_to_graph_undefined_p(x) ((x)==points_to_graph_undefined)
86 #define gen_POINTS_TO_GRAPH_cons gen_points_to_graph_cons
100 #define points_to_graph_domain_number(x) ((x)->_type_)
101 #define points_to_graph_bottom_(x) points_to_graph_bottom(x)
102 #define points_to_graph_bottom(x) ((x)->_points_to_graph_bottom_.b)
103 #define points_to_graph_set_(x) points_to_graph_set(x)
104 #define points_to_graph_set(x) ((x)->_points_to_graph_set_)
108 #define POINTS_TO_LIST(x) ((points_to_list)((x).p))
109 #define points_to_list_CAST(x) POINTS_TO_LIST(x)
110 #define POINTS_TO_LIST_CAST(x) POINTS_TO_LIST(x)
111 #define POINTS_TO_LIST_(x) ((x).e)
112 #define POINTS_TO_LIST_TYPE points_to_list
113 #define points_to_list_TYPE points_to_list
114 #define points_to_list_undefined ((points_to_list)gen_chunk_undefined)
115 #define points_to_list_undefined_p(x) ((x)==points_to_list_undefined)
122 #define gen_POINTS_TO_LIST_cons gen_points_to_list_cons
136 #define points_to_list_domain_number(x) ((x)->_type_)
137 #define points_to_list_bottom_(x) points_to_list_bottom(x)
138 #define points_to_list_bottom(x) ((x)->_points_to_list_bottom_.b)
139 #define points_to_list_list_(x) points_to_list_list(x)
140 #define points_to_list_list(x) ((x)->_points_to_list_list_)
144 #define POINTS_TO(x) ((points_to)((x).p))
145 #define points_to_CAST(x) POINTS_TO(x)
146 #define POINTS_TO_CAST(x) POINTS_TO(x)
147 #define POINTS_TO_(x) ((x).e)
148 #define POINTS_TO_TYPE points_to
149 #define points_to_TYPE points_to
150 #define points_to_undefined ((points_to)gen_chunk_undefined)
151 #define points_to_undefined_p(x) ((x)==points_to_undefined)
158 #define gen_POINTS_TO_cons gen_points_to_cons
174 #define points_to_domain_number(x) ((x)->_type_)
175 #define points_to_source_(x) points_to_source(x)
176 #define points_to_source(x) ((x)->_points_to_source_)
177 #define points_to_sink_(x) points_to_sink(x)
178 #define points_to_sink(x) ((x)->_points_to_sink_)
179 #define points_to_approximation_(x) points_to_approximation(x)
180 #define points_to_approximation(x) ((x)->_points_to_approximation_)
181 #define points_to_descriptor_(x) points_to_descriptor(x)
182 #define points_to_descriptor(x) ((x)->_points_to_descriptor_)
186 #define STATEMENT_POINTS_TO(x) ((statement_points_to)((x).p))
187 #define statement_points_to_CAST(x) STATEMENT_POINTS_TO(x)
188 #define STATEMENT_POINTS_TO_CAST(x) STATEMENT_POINTS_TO(x)
189 #define STATEMENT_POINTS_TO_(x) ((x).e)
190 #define STATEMENT_POINTS_TO_TYPE statement_points_to
191 #define statement_points_to_TYPE statement_points_to
192 #define statement_points_to_undefined ((statement_points_to)gen_chunk_undefined)
193 #define statement_points_to_undefined_p(x) ((x)==statement_points_to_undefined)
200 #define gen_STATEMENT_POINTS_TO_cons gen_statement_points_to_cons
213 #define statement_points_to_domain_number(x) ((x)->_type_)
214 #define statement_points_to_hash_table(x) ((x)->_statement_points_to_holder_)
215 #define statement_points_to_key_type statement
216 #define statement_points_to_value_type points_to_list
217 #define STATEMENT_POINTS_TO_MAP(k,v,c,f) FUNCTION_MAP(statement_points_to,p,p,k,v,c,f)
218 #define STATEMENT_POINTS_TO_FOREACH(k,v,f) FUNCTION_FOREACH(statement_points_to,p,p,k,v,f)
225 #define points_to_private_spec "\
226 --NEWGEN-START 220\n\
227 import descriptor from \"ri.newgen\";\n\
228 import approximation from \"ri.newgen\";\n\
229 import statement from \"ri.newgen\";\n\
230 import cell from \"effects.newgen\";\n\
231 points_to_graph = bottom:bool x set:points_to{};\n\
232 points_to_list = bottom:bool x list:points_to*;\n\
233 points_to = source:cell x sink:cell x approximation:approximation x descriptor:descriptor;\n\
234 statement_points_to = persistant statement:statement -> points_to_list:points_to_list;\n\
bool points_to_defined_p(points_to)
points_to_graph copy_points_to_graph(points_to_graph)
POINTS_TO_GRAPH.
bool points_to_consistent_p(points_to)
points_to_list read_points_to_list(FILE *)
void free_points_to(points_to)
points_to_list apply_statement_points_to(statement_points_to, statement)
struct _newgen_struct_approximation_ * approximation
struct _newgen_struct_statement_points_to_ * statement_points_to
void update_statement_points_to(statement_points_to, statement, points_to_list)
void points_to_list_non_recursive_free(points_to_list)
struct _newgen_struct_statement_ * statement
list gen_points_to_list_cons(points_to_list, list)
void points_to_list_assign_contents(points_to_list, points_to_list)
points_to_graph read_points_to_graph(FILE *)
void write_statement_points_to(FILE *, statement_points_to)
bool points_to_list_defined_p(points_to_list)
statement_points_to copy_statement_points_to(statement_points_to)
STATEMENT_POINTS_TO.
points_to_graph make_points_to_graph(bool, set)
void free_points_to_graph(points_to_graph)
void write_points_to_list(FILE *, points_to_list)
list gen_points_to_graph_cons(points_to_graph, list)
points_to read_points_to(FILE *)
struct _newgen_struct_cell_ * cell
statement_points_to make_statement_points_to(void)
void write_points_to(FILE *, points_to)
bool statement_points_to_consistent_p(statement_points_to)
void free_statement_points_to(statement_points_to)
struct _newgen_struct_points_to_ * points_to
statement_points_to read_statement_points_to(FILE *)
points_to check_points_to(points_to)
statement_points_to check_statement_points_to(statement_points_to)
points_to_graph check_points_to_graph(points_to_graph)
void extend_statement_points_to(statement_points_to, statement, points_to_list)
list gen_statement_points_to_cons(statement_points_to, list)
void write_points_to_graph(FILE *, points_to_graph)
struct _newgen_struct_points_to_list_ * points_to_list
bool bound_statement_points_to_p(statement_points_to, statement)
void statement_points_to_assign_contents(statement_points_to, statement_points_to)
void points_to_non_recursive_free(points_to)
void points_to_graph_non_recursive_free(points_to_graph)
void points_to_assign_contents(points_to, points_to)
bool points_to_graph_defined_p(points_to_graph)
list gen_points_to_cons(points_to, list)
points_to_list delete_statement_points_to(statement_points_to, statement)
points_to_list copy_points_to_list(points_to_list)
POINTS_TO_LIST.
points_to_list make_points_to_list(bool, list)
bool points_to_graph_consistent_p(points_to_graph)
struct _newgen_struct_points_to_graph_ * points_to_graph
void free_points_to_list(points_to_list)
void statement_points_to_non_recursive_free(statement_points_to)
bool statement_points_to_defined_p(statement_points_to)
struct _newgen_struct_descriptor_ * descriptor
points_to_list check_points_to_list(points_to_list)
points_to copy_points_to(points_to)
POINTS_TO.
points_to make_points_to(cell, cell, approximation, descriptor)
bool points_to_list_consistent_p(points_to_list)
void points_to_graph_assign_contents(points_to_graph, points_to_graph)
descriptor _points_to_descriptor_
approximation:approximation
approximation _points_to_approximation_
sink:cell
cell _points_to_sink_
source:cell
set _points_to_graph_set_
bottom:bool
gen_chunk _points_to_graph_bottom_
list _points_to_list_list_
bottom:bool
gen_chunk _points_to_list_bottom_
hash_table _statement_points_to_holder_
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.
A gen_chunk is used to store every object.