10 const std::vector<java_generic_parametert>
16 std::vector<java_generic_parametert> generic_parameters;
21 generic_parameters.insert(
22 generic_parameters.end(),
30 generic_parameters.insert(
31 generic_parameters.end(),
35 return generic_parameters;
43 const std::vector<java_generic_parametert> ¶meters,
44 const std::vector<reference_typet> &types)
50 std::vector<std::pair<java_generic_parametert, reference_typet>> pairs;
51 pairs.reserve(parameters.size());
56 std::back_inserter(pairs),
59 return std::make_pair(param, type);
62 for(
const auto &pair : pairs)
72 pair.first.get_name()))
74 const irep_idt &key = pair.first.get_name();
77 key, std::vector<reference_typet>());
79 .second.push_back(pair.second);
95 const typet &pointer_subtype_struct)
102 pointer_subtype_struct.
get(ID_name));
113 !pointer_subtype_struct.
get_bool(ID_incomplete_class) &&
119 const std::vector<java_generic_parametert> &generic_parameters =
124 generic_parameters.size(),
125 "All generic parameters of the pointer type need to be specified");
144 const typet &symbol_struct)
156 !symbol_struct.
get_bool(ID_incomplete_class) &&
163 const std::vector<java_generic_parametert> &generic_parameters =
167 generic_symbol.
generic_types().size() == generic_parameters.size(),
168 "All generic parameters of the superclass need to be concretized");
The type of an expression.
pointer_typet pointer_type(const typet &subtype)
bool is_java_generic_symbol_type(const typet &type)
const java_generic_class_typet & to_java_generic_class_type(const java_class_typet &type)
bool is_java_generic_parameter(const typet &type)
Checks whether the type is a java generic parameter/variable, e.g., T in List<T>. ...
const java_generic_parametert & to_java_generic_parameter(const typet &type)
std::vector< irep_idt > erase_keys
Keys of the entries to pop on destruction.
bool get_bool(const irep_namet &name) const
#define INVARIANT(CONDITION, REASON)
const generic_type_argumentst & generic_type_arguments() const
const java_generic_symbol_typet & to_java_generic_symbol_type(const typet &type)
Class to hold a class with generics, extends the java class type with a vector of java generic type p...
A reference into the symbol table.
const java_implicitly_generic_class_typet & to_java_implicitly_generic_class_type(const java_class_typet &type)
const std::vector< java_generic_parametert > get_all_generic_parameters(const typet &type)
Author: Diffblue Ltd.
const irep_idt & get(const irep_namet &name) const
#define PRECONDITION(CONDITION)
const generic_typest & generic_types() const
bool is_java_generic_class_type(const typet &type)
Type for a generic symbol, extends symbol_typet with a vector of java generic types.
const implicit_generic_typest & implicit_generic_types() const
Class to hold type with generic type arguments, for example java.util.List in either a reference of t...
const void insert_pairs_for_pointer(const pointer_typet &pointer_type, const typet &pointer_subtype_struct)
Add a pair of a parameter and its types for each generic parameter of the given generic pointer type ...
const java_generic_typet & to_java_generic_type(const typet &type)
const void insert_pairs(const std::vector< java_generic_parametert > ¶meters, const std::vector< reference_typet > &types)
Add pairs to the controlled map.
Class to hold a Java generic type parameter (also called type variable), e.g., T in List<T>...
const irep_idt get_name() const
bool is_java_generic_type(const typet &type)
const typet & subtype() const
bool is_java_implicitly_generic_class_type(const typet &type)
Type to hold a Java class that is implicitly generic, e.g., an inner class of a generic outer class o...
const java_class_typet & to_java_class_type(const typet &type)
const generic_typest & generic_types() const
const void insert_pairs_for_symbol(const symbol_typet &symbol_type, const typet &symbol_struct)
Add a pair of a parameter and its types for each generic parameter of the given generic symbol type t...
generic_parameter_specialization_mapt & generic_parameter_specialization_map
Generic parameter specialization map to modify.