13 template <
class context_
classt>
18 new context_classt{abstract_object, abstract_object->type()});
21 template <
class abstract_
object_
classt>
31 return std::make_shared<abstract_object_classt>(type, top, bottom);
34 return std::make_shared<abstract_object_classt>(e, environment, ns);
42 return create_context_abstract_object<data_dependency_contextt>(
46 return create_context_abstract_object<write_location_contextt>(
49 return abstract_object;
68 template <
class abstract_
object_
classt>
78 auto abstract_object = create_abstract_object<abstract_object_classt>(
79 type, top, bottom, e, environment, ns);
86 const typet &type)
const
91 type.
id() == ID_signedbv || type.
id() == ID_unsignedbv ||
92 type.
id() == ID_fixedbv || type.
id() == ID_c_bool || type.
id() == ID_bool ||
93 type.
id() == ID_integer || type.
id() == ID_c_bit_field)
97 else if(type.
id() == ID_floatbv)
102 else if(type.
id() == ID_array)
106 else if(type.
id() == ID_pointer)
110 else if(type.
id() == ID_struct)
114 else if(type.
id() == ID_union)
119 return abstract_object_type;
135 switch(abstract_object_type)
138 return initialize_abstract_object<abstract_objectt>(
139 followed_type, top, bottom, e, environment, ns,
configuration);
141 return initialize_abstract_object<constant_abstract_valuet>(
142 followed_type, top, bottom, e, environment, ns,
configuration);
144 return initialize_abstract_object<interval_abstract_valuet>(
145 followed_type, top, bottom, e, environment, ns,
configuration);
149 return initialize_abstract_object<value_set_abstract_valuet>(
150 followed_type, top, bottom, e, environment, ns,
configuration);
152 return initialize_abstract_object<value_set_abstract_objectt>(
153 followed_type, top, bottom, e, environment, ns,
configuration);
156 return initialize_abstract_object<two_value_array_abstract_objectt>(
157 followed_type, top, bottom, e, environment, ns,
configuration);
159 return initialize_abstract_object<full_array_abstract_objectt>(
160 followed_type, top, bottom, e, environment, ns,
configuration);
163 return initialize_abstract_object<two_value_pointer_abstract_objectt>(
164 followed_type, top, bottom, e, environment, ns,
configuration);
166 return initialize_abstract_object<constant_pointer_abstract_objectt>(
167 followed_type, top, bottom, e, environment, ns,
configuration);
169 return initialize_abstract_object<value_set_pointer_abstract_objectt>(
170 followed_type, top, bottom, e, environment, ns,
configuration);
173 return initialize_abstract_object<two_value_struct_abstract_objectt>(
174 followed_type, top, bottom, e, environment, ns,
configuration);
176 return initialize_abstract_object<full_struct_abstract_objectt>(
177 followed_type, top, bottom, e, environment, ns,
configuration);
180 return initialize_abstract_object<two_value_union_abstract_objectt>(
181 followed_type, top, bottom, e, environment, ns,
configuration);
185 return initialize_abstract_object<abstract_objectt>(
186 followed_type, top, bottom, e, environment, ns,
configuration);