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