cprover
|
Type for a generic symbol, extends struct_tag_typet with a vector of java generic types. More...
#include <java_types.h>
Public Types | |
typedef std::vector< reference_typet > | generic_typest |
![]() | |
typedef std::vector< irept > | subt |
typedef std::map< irep_namet, irept > | named_subt |
Public Member Functions | |
java_generic_struct_tag_typet (const struct_tag_typet &type, const std::string &base_ref, const std::string &class_name_prefix) | |
Construct a generic symbol type by extending the symbol type type with generic types extracted from the reference base_ref . More... | |
const generic_typest & | generic_types () const |
generic_typest & | generic_types () |
optionalt< size_t > | generic_type_index (const java_generic_parametert &type) const |
Check if this symbol has the given generic type. More... | |
![]() | |
struct_tag_typet (const irep_idt &identifier) | |
![]() | |
tag_typet (const irep_idt &_id, const irep_idt &identifier) | |
void | set_identifier (const irep_idt &identifier) |
const irep_idt & | get_identifier () const |
![]() | |
typet () | |
typet (const irep_idt &_id) | |
typet (const irep_idt &_id, const typet &_subtype) | |
const typet & | subtype () const |
typet & | subtype () |
bool | has_subtypes () const |
bool | has_subtype () const |
void | remove_subtype () |
const source_locationt & | source_location () const |
source_locationt & | add_source_location () |
typet & | add_type (const irep_namet &name) |
const typet & | find_type (const irep_namet &name) const |
![]() | |
bool | is_nil () const |
bool | is_not_nil () const |
irept (const irep_idt &_id) | |
irept () | |
irept (const irept &irep) | |
irept (irept &&irep) | |
irept & | operator= (const irept &irep) |
irept & | operator= (irept &&irep) |
~irept () | |
const irep_idt & | id () const |
const std::string & | id_string () const |
void | id (const irep_idt &_data) |
const irept & | find (const irep_namet &name) const |
irept & | add (const irep_namet &name) |
irept & | add (const irep_namet &name, const irept &irep) |
const std::string & | get_string (const irep_namet &name) const |
const irep_idt & | get (const irep_namet &name) const |
bool | get_bool (const irep_namet &name) const |
signed int | get_int (const irep_namet &name) const |
unsigned int | get_unsigned_int (const irep_namet &name) const |
std::size_t | get_size_t (const irep_namet &name) const |
long long | get_long_long (const irep_namet &name) const |
void | set (const irep_namet &name, const irep_idt &value) |
void | set (const irep_namet &name, const irept &irep) |
void | set (const irep_namet &name, const long long value) |
void | remove (const irep_namet &name) |
void | move_to_sub (irept &irep) |
void | move_to_named_sub (const irep_namet &name, irept &irep) |
bool | operator== (const irept &other) const |
bool | operator!= (const irept &other) const |
void | swap (irept &irep) |
bool | operator< (const irept &other) const |
defines ordering on the internal representation More... | |
bool | ordering (const irept &other) const |
defines ordering on the internal representation More... | |
int | compare (const irept &i) const |
defines ordering on the internal representation More... | |
void | clear () |
void | make_nil () |
subt & | get_sub () |
const subt & | get_sub () const |
named_subt & | get_named_sub () |
const named_subt & | get_named_sub () const |
named_subt & | get_comments () |
const named_subt & | get_comments () const |
std::size_t | hash () const |
std::size_t | full_hash () const |
bool | full_eq (const irept &other) const |
std::string | pretty (unsigned indent=0, unsigned max_indent=0) const |
const dt & | read () const |
dt & | write () |
Additional Inherited Members | |
![]() | |
static void | check (const typet &, const validation_modet) |
Check that the type is well-formed (shallow checks only, i.e., subtypes are not checked) More... | |
static void | validate (const typet &type, const namespacet &, const validation_modet vm=validation_modet::INVARIANT) |
Check that the type is well-formed, assuming that its subtypes have already been checked for well-formedness. More... | |
static void | validate_full (const typet &type, const namespacet &ns, const validation_modet vm=validation_modet::INVARIANT) |
Check that the type is well-formed (full check, including checks of subtypes) More... | |
![]() | |
void | detach () |
![]() | |
static bool | is_comment (const irep_namet &name) |
static void | remove_ref (dt *old_data) |
static void | nonrecursive_destructor (dt *old_data) |
Does the same as remove_ref, but using an explicit stack instead of recursion. More... | |
![]() | |
dt * | data |
![]() | |
static dt | empty_d |
Type for a generic symbol, extends struct_tag_typet with a vector of java generic types.
This is used to store the type of generic superclasses and interfaces.
Definition at line 754 of file java_types.h.
typedef std::vector<reference_typet> java_generic_struct_tag_typet::generic_typest |
Definition at line 757 of file java_types.h.
java_generic_struct_tag_typet::java_generic_struct_tag_typet | ( | const struct_tag_typet & | type, |
const std::string & | base_ref, | ||
const std::string & | class_name_prefix | ||
) |
Construct a generic symbol type by extending the symbol type type
with generic types extracted from the reference base_ref
.
This assumes that the class named class_name_prefix
extends or implements the class type
, and that base_ref
corresponds to a generic class. For instance since HashMap<K,V> extends Map<K,V> we would call java_generic_struct_tag_typet(struct_tag_typet("Map"), "Ljava/util/Map<TK;TV;>;", "java.util.HashMap")
which generates a symbol type with identifier "Map", and two generic types with identifier "java.util.HashMap::K" and "java.util.HashMap::V" respectively.
Definition at line 924 of file java_types.cpp.
optionalt< size_t > java_generic_struct_tag_typet::generic_type_index | ( | const java_generic_parametert & | type | ) | const |
Check if this symbol has the given generic type.
If yes, return its index in the vector of generic types.
type | The parameter type we are looking for. |
Definition at line 951 of file java_types.cpp.
|
inline |
Definition at line 769 of file java_types.h.
|
inline |
Definition at line 764 of file java_types.h.