cprover
generic_parameter_specialization_map_keys.h
Go to the documentation of this file.
1 
3 #ifndef CPROVER_JAVA_BYTECODE_GENERIC_PARAMETER_SPECIALIZATION_MAP_KEYS_H
4 #define CPROVER_JAVA_BYTECODE_GENERIC_PARAMETER_SPECIALIZATION_MAP_KEYS_H
5 
6 #include "select_pointer_type.h"
7 #include "java_types.h"
8 
16 {
17 public:
23  &_generic_parameter_specialization_map)
25  _generic_parameter_specialization_map)
26  {
27  }
28 
32  {
33  for(const auto key : erase_keys)
34  {
36  auto &val = generic_parameter_specialization_map.find(key)->second;
37  val.pop_back();
38  if(val.empty())
40  }
41  }
42 
43  // Objects of these class cannot be copied in any way - delete the copy
44  // constructor and copy assignment operator
49 
50  const void insert_pairs_for_pointer(
52  const typet &pointer_subtype_struct);
53  const void insert_pairs_for_symbol(
54  const symbol_typet &symbol_type,
55  const typet &symbol_struct);
56 
57 private:
61  std::vector<irep_idt> erase_keys;
62 
63  const void insert_pairs(
64  const std::vector<java_generic_parametert> &parameters,
65  const std::vector<reference_typet> &types);
66 };
67 
68 #endif // CPROVER_JAVA_BYTECODE_GENERIC_PARAMETER_SPECIALIZATION_MAP_KEYS_H
The type of an expression.
Definition: type.h:22
pointer_typet pointer_type(const typet &subtype)
Definition: c_types.cpp:243
std::vector< irep_idt > erase_keys
Keys of the entries to pop on destruction.
std::unordered_map< irep_idt, std::vector< reference_typet > > generic_parameter_specialization_mapt
A reference into the symbol table.
Definition: std_types.h:110
~generic_parameter_specialization_map_keyst()
Removes the top of the stack for each key in erase_keys from the controlled map.
The pointer type.
Definition: std_types.h:1435
#define PRECONDITION(CONDITION)
Definition: invariant.h:242
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 void insert_pairs(const std::vector< java_generic_parametert > &parameters, const std::vector< reference_typet > &types)
Add pairs to the controlled map.
generic_parameter_specialization_map_keyst & operator=(const generic_parameter_specialization_map_keyst &)=delete
generic_parameter_specialization_map_keyst(generic_parameter_specialization_mapt &_generic_parameter_specialization_map)
Initialize a generic-parameter-specialization-map entry owner operating on a given map...
Handle selection of correct pointer type (for example changing abstract classes to concrete versions)...
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.