Go to the documentation of this file.
10 #ifndef CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_PARSE_TREE_H
11 #define CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_PARSE_TREE_H
40 void output(std::ostream &)
const;
46 void output(std::ostream &)
const;
53 const irep_idt &annotation_type_name);
60 typedef std::vector<exprt>
argst;
162 typedef std::vector<verification_type_infot>
164 typedef std::vector<verification_type_infot>
174 void output(std::ostream &out)
const;
189 void output(std::ostream &out)
const;
296 size_t bootstrap_index,
307 void output(std::ostream &out)
const;
313 void output(std::ostream &out)
const;
348 return get(ID_class);
353 return get(ID_component_name);
363 #endif // CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_PARSE_TREE_H
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
std::vector< irep_idt > throws_exception_table
optionalt< std::string > signature
lambda_method_handle_mapt lambda_method_handle_map
void add_method_handle(size_t bootstrap_index, const lambda_method_handlet &handle)
struct_tag_typet catch_type
element_value_pairst element_value_pairs
java_class_typet::method_handle_kindt handle_type
The type of an expression, extends irept.
instructiont & add_instruction()
bool can_cast_expr< fieldref_exprt >(const exprt &base)
std::vector< instructiont > instructionst
void output(std::ostream &) const
local_variable_tablet local_variable_table
Represents the argument of an instruction that uses a CONSTANT_Fieldref This is used for example as a...
void output(std::ostream &) const
std::vector< verification_type_infot > stack_verification_type_infot
std::vector< annotationt > annotationst
java_bytecode_parse_treet()=default
An empty bytecode parse tree, no class name set.
bool attribute_bootstrapmethods_read
std::list< irep_idt > implementst
verification_type_info_type
Base class for all expressions.
A struct tag type, i.e., struct_typet with an identifier.
static optionalt< annotationt > find_annotation(const annotationst &annotations, const irep_idt &annotation_type_name)
Find an annotation given its name.
void output(std::ostream &out) const
irep_idt component_name() const
bool is_unknown_handle() const
std::vector< annotationst > parameter_annotations
Java annotations that were applied to parameters of this method.
bool has_annotation(const irep_idt &annotation_id) const
std::map< std::pair< irep_idt, size_t >, lambda_method_handlet > lambda_method_handle_mapt
std::vector< element_value_pairt > element_value_pairst
const irep_idt & get(const irep_idt &name) const
An expression describing a method on a class.
source_locationt source_location
verification_type_info_type type
typet & type()
Return the type of the expression.
lambda_method_handlet(const class_method_descriptor_exprt &method_descriptor, java_class_typet::method_handle_kindt handle_type)
Construct a lambda method handle with parameters params.
java_bytecode_parse_treet::methodt methodt
source_locationt source_location
void output(std::ostream &out) const
java_bytecode_parse_treet & operator=(const java_bytecode_parse_treet &)=delete
void set(const irep_idt &name, const irep_idt &value)
instructionst instructions
#define PRECONDITION(CONDITION)
classt & operator=(const classt &)=delete
void output(std::ostream &out) const
const class_method_descriptor_exprt & get_method_descriptor() const
const lambda_method_handlet & get_method_handle(size_t bootstrap_index) const
@ UNKNOWN_HANDLE
Can't be called.
void output(std::ostream &out) const
nonstd::optional< T > optionalt
std::vector< u2 > u2_valuest
std::vector< exceptiont > exception_tablet
stack_verification_type_infot stack
stack_map_tablet stack_map_table
java_bytecode_parse_treet::classt::lambda_method_handlet lambda_method_handlet
irep_idt class_name() const
optionalt< std::string > signature
std::vector< local_variablet > local_variable_tablet
std::vector< exprt > argst
std::vector< stack_map_table_entryt > stack_map_tablet
classt(const irep_idt &name)
Create a class name.
exception_tablet exception_table
std::list< fieldt > fieldst
optionalt< std::string > signature
std::set< irep_idt > class_refst
method_handle_kindt
Indicates what sort of code should be synthesised for a lambda call:
std::list< methodt > methodst
java_bytecode_parse_treet(const irep_idt &class_name)
Create a blank parse tree for class class_name.
local_verification_type_infot locals
std::vector< verification_type_infot > local_verification_type_infot
optionalt< class_method_descriptor_exprt > method_descriptor
fieldref_exprt(const typet &type, const irep_idt &component_name, const irep_idt &class_name)
@ SAME_LOCALS_ONE_STACK_EXTENDED
static lambda_method_handlet get_unknown_handle()