cprover
select_pointer_type.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3  Module: Java Bytecode Language Conversion
4 
5  Author: Diffblue Ltd.
6 
7 \*******************************************************************/
8 #ifndef CPROVER_JAVA_BYTECODE_SELECT_POINTER_TYPE_H
9 #define CPROVER_JAVA_BYTECODE_SELECT_POINTER_TYPE_H
10 
14 #include <vector>
15 
16 #include "java_types.h"
17 #include <util/optional.h>
18 #include <util/std_types.h>
19 
20 typedef std::unordered_map<irep_idt, std::vector<reference_typet>>
22 typedef std::set<irep_idt> generic_parameter_recursion_trackingt;
23 
24 class namespacet;
25 
27 {
29  const irep_idt &,
32  const size_t) const;
34  const irep_idt &parameter_name,
35  const generic_parameter_specialization_mapt &visited) const;
36 
37 public:
38  virtual ~select_pointer_typet() = default;
42  &generic_parameter_specialization_map,
43  const namespacet &ns) const;
44 
48  &generic_parameter_specialization_map,
50 };
51 
52 #endif // CPROVER_JAVA_BYTECODE_SELECT_POINTER_TYPE_H
std::set< irep_idt > generic_parameter_recursion_trackingt
optionalt< pointer_typet > get_recursively_instantiated_type(const irep_idt &, const generic_parameter_specialization_mapt &, generic_parameter_recursion_trackingt &, const size_t) const
See get_recursively instantiated_type, the additional parameters just track the recursion to prevent ...
pointer_typet pointer_type(const typet &subtype)
Definition: c_types.cpp:243
virtual ~select_pointer_typet()=default
std::unordered_map< irep_idt, std::vector< reference_typet > > generic_parameter_specialization_mapt
The pointer type.
Definition: std_types.h:1426
nonstd::optional< T > optionalt
Definition: optional.h:35
TO_BE_DOCUMENTED.
Definition: namespace.h:74
pointer_typet specialize_generics(const pointer_typet &pointer_type, const generic_parameter_specialization_mapt &generic_parameter_specialization_map, generic_parameter_recursion_trackingt &visited) const
Specialize generic parameters in a pointer type based on the current map of parameters -> types...
API to type classes.
virtual pointer_typet convert_pointer_type(const pointer_typet &pointer_type, const generic_parameter_specialization_mapt &generic_parameter_specialization_map, const namespacet &ns) const
Select what type should be used for a given pointer type.