RPNXCortado
C++23 JVM class-file, bytecode, validation, and JAR toolkit
Loading...
Searching...
No Matches
rpnx::cortado Namespace Reference

JVM class-file, bytecode, validation, generation, and JAR APIs. More...

Classes

struct  annotation
 A JVM annotation structure. More...
 
struct  annotation_array_value
 An array-valued annotation element. More...
 
struct  annotation_class_value
 A class-valued annotation element. More...
 
struct  annotation_constant_value
 A constant-valued annotation element. More...
 
struct  annotation_default_attribute
 An AnnotationDefault attribute. More...
 
struct  annotation_element
 One named annotation element. More...
 
struct  annotation_enum_value
 An enum-valued annotation element. More...
 
struct  annotation_value
 Any annotation element_value structure. More...
 
struct  any_type_argument
 An unbounded wildcard type argument. More...
 
struct  append_frame
 An append_frame entry retaining its exact frame type. More...
 
struct  array_type_descriptor
 An array JVM field descriptor. More...
 
struct  array_type_signature
 An array whose component is another Java type signature. More...
 
class  assembly_error
 Reports that symbolic bytecode could not be assembled. More...
 
struct  bootstrap_method
 One BootstrapMethods attribute entry. More...
 
struct  bootstrap_method_index
 A type-safe index into the BootstrapMethods attribute. More...
 
struct  bootstrap_methods_attribute
 A BootstrapMethods attribute. More...
 
struct  branch16_instruction
 A two-byte branch instruction. More...
 
struct  branch32_instruction
 A four-byte branch instruction. More...
 
struct  branch_displacement16
 A signed 16-bit branch displacement relative to an instruction opcode. More...
 
struct  branch_displacement32
 A signed 32-bit branch displacement relative to an instruction opcode. More...
 
struct  bytecode_read_options
 Resource and strictness controls for bytecode decoding. More...
 
struct  bytecode_write_options
 Strictness controls for bytecode encoding. More...
 
struct  catch_target_info
 An exception-parameter annotation target. More...
 
struct  chop_frame
 A chop_frame entry retaining its exact frame type. More...
 
struct  class_constant
 A CONSTANT_Class entry. More...
 
struct  class_file
 An owning, typed representation of one JVM class file. More...
 
class  class_file_builder
 An owning symbolic class-file builder with a shared constant-pool interner. More...
 
struct  class_file_read_options
 Resource and strictness controls for class-file decoding. More...
 
struct  class_file_version
 A JVM class-file version pair. More...
 
struct  class_file_write_options
 Strictness controls for class-file encoding. More...
 
class  class_hierarchy_resolver_ref
 Non-owning type-erased class-hierarchy resolver used for reference merges. More...
 
struct  class_signature
 A complete class Signature attribute grammar value. More...
 
struct  class_type_signature
 A possibly parameterized and nested class type signature. More...
 
struct  code_attribute
 A fully typed Code attribute. More...
 
struct  code_build_context
 Method context needed to finalize symbolic code. More...
 
struct  code_build_options
 Controls automatic Code metadata generation. More...
 
class  code_builder
 An owning symbolic JVM code builder. More...
 
struct  code_offset
 A byte offset within the code array of a Code attribute. More...
 
class  constant_pool_builder
 Interns constant-pool entries while retaining deterministic first-insertion order. More...
 
struct  constant_pool_index
 A type-safe index into a JVM constant pool. More...
 
struct  constant_pool_index16_instruction
 A two-byte constant-pool-index instruction. More...
 
struct  constant_pool_index8_instruction
 A one-byte constant-pool-index instruction. More...
 
struct  constant_value_attribute
 A ConstantValue attribute. More...
 
struct  deprecated_attribute
 A Deprecated marker attribute. More...
 
struct  deserialization_result
 A decoded value and the number of source bytes it consumed. More...
 
struct  double_constant
 A CONSTANT_Double entry represented by its exact IEEE 754 bits. More...
 
struct  double_variable_info
 A double verification type. More...
 
struct  dynamic_constant
 A CONSTANT_Dynamic entry. More...
 
struct  empty_target_info
 An empty annotation target. More...
 
struct  enclosing_method_attribute
 An EnclosingMethod attribute. More...
 
struct  exact_type_argument
 An invariant reference type argument. More...
 
struct  exception_handler
 One Code exception-table entry. More...
 
struct  exceptions_attribute
 An Exceptions attribute. More...
 
struct  extends_type_argument
 An extends-bounded wildcard type argument. More...
 
struct  field_info
 A JVM field_info structure. More...
 
struct  fieldref_constant
 A CONSTANT_Fieldref entry. More...
 
struct  float_constant
 A CONSTANT_Float entry represented by its exact IEEE 754 bits. More...
 
struct  float_variable_info
 A float verification type. More...
 
struct  formal_parameter_target_info
 A formal-parameter annotation target. More...
 
struct  full_frame
 A full_frame entry. More...
 
struct  iinc_instruction
 The compact iinc instruction. More...
 
struct  inner_class_info
 One InnerClasses attribute entry. More...
 
struct  inner_classes_attribute
 An InnerClasses attribute. More...
 
struct  instruction_sequence
 An owning sequence of exactly decoded instruction encodings. More...
 
struct  integer_constant
 A CONSTANT_Integer entry represented by its exact IEEE/JVM bits. More...
 
struct  integer_variable_info
 An integer verification type. More...
 
struct  interface_methodref_constant
 A CONSTANT_InterfaceMethodref entry. More...
 
struct  invoke_dynamic_constant
 A CONSTANT_InvokeDynamic entry. More...
 
struct  invokedynamic_instruction
 The invokedynamic instruction, including its reserved field. More...
 
struct  invokeinterface_instruction
 The invokeinterface instruction, including its reserved byte. More...
 
struct  jar_entry
 One owning JAR/ZIP entry, with its data stored uncompressed in memory. More...
 
struct  jar_file
 An owning JAR archive representation. More...
 
struct  jar_read_options
 Explicit resource limits applied while reading an untrusted JAR archive. More...
 
struct  java_type_signature
 A primitive or reference Java type signature. More...
 
struct  label
 A symbolic bytecode position owned by one code_builder. More...
 
struct  label_binding
 A label binding in symbolic code. More...
 
struct  label_owner
 Unique ownership token for labels created by one code_builder lineage. More...
 
struct  labeled_branch_instruction
 A branch whose target is a symbolic label. More...
 
struct  labeled_exception_handler
 A symbolic exception-table range. More...
 
struct  labeled_line_number
 A symbolic source line binding. More...
 
struct  labeled_local_variable
 A symbolic local-variable scope. More...
 
struct  labeled_local_variable_type
 A symbolic generic local-variable signature scope. More...
 
struct  labeled_lookup_switch_pair
 One symbolic lookupswitch match and target. More...
 
struct  labeled_lookupswitch_instruction
 A symbolic lookupswitch. More...
 
struct  labeled_tableswitch_instruction
 A symbolic tableswitch. More...
 
struct  line_number_info
 One LineNumberTable entry. More...
 
struct  line_number_table_attribute
 A LineNumberTable attribute. More...
 
struct  local_instruction
 A one-byte local-variable-index instruction. More...
 
struct  local_variable_index
 A JVM local-variable-array index. More...
 
struct  local_variable_info
 One LocalVariableTable entry. More...
 
struct  local_variable_table_attribute
 A LocalVariableTable attribute. More...
 
struct  local_variable_target_info
 A local-variable annotation target. More...
 
struct  local_variable_target_range
 One local-variable annotation range. More...
 
struct  local_variable_type_info
 One LocalVariableTypeTable entry. More...
 
struct  local_variable_type_table_attribute
 A LocalVariableTypeTable attribute. More...
 
struct  long_constant
 A CONSTANT_Long entry represented by its exact two's-complement bits. More...
 
struct  long_variable_info
 A long verification type. More...
 
struct  lookup_switch_pair
 One match/target pair in a lookupswitch instruction. More...
 
struct  lookupswitch_instruction
 An exact lookupswitch instruction, including alignment bytes. More...
 
struct  method_descriptor
 A parsed JVM method descriptor. More...
 
struct  method_handle_constant
 A CONSTANT_MethodHandle entry. More...
 
struct  method_info
 A JVM method_info structure. More...
 
struct  method_parameter
 One MethodParameters entry. More...
 
struct  method_parameters_attribute
 A MethodParameters attribute. More...
 
struct  method_signature
 A complete method Signature attribute grammar value. More...
 
struct  method_type_constant
 A CONSTANT_MethodType entry. More...
 
struct  methodref_constant
 A CONSTANT_Methodref entry. More...
 
struct  module_attribute
 A Module attribute. More...
 
struct  module_constant
 A CONSTANT_Module entry. More...
 
struct  module_exports_info
 One exports entry in a Module attribute. More...
 
struct  module_main_class_attribute
 A ModuleMainClass attribute. More...
 
struct  module_opens_info
 One opens entry in a Module attribute. More...
 
struct  module_packages_attribute
 A ModulePackages attribute. More...
 
struct  module_provides_info
 One provides entry in a Module attribute. More...
 
struct  module_requires_info
 One requires entry in a Module attribute. More...
 
struct  multianewarray_instruction
 The multianewarray instruction. More...
 
struct  name_and_type_constant
 A CONSTANT_NameAndType entry. More...
 
struct  nest_host_attribute
 A NestHost attribute. More...
 
struct  nest_members_attribute
 A NestMembers attribute. More...
 
struct  newarray_instruction
 The newarray instruction. More...
 
struct  null_variable_info
 A null verification type. More...
 
struct  object_type_descriptor
 An object JVM field descriptor. More...
 
struct  object_variable_info
 An object or array verification type. More...
 
struct  offset_target_info
 A bytecode-offset annotation target. More...
 
struct  package_constant
 A CONSTANT_Package entry. More...
 
class  parse_error
 Reports malformed, truncated, unsupported, or inconsistent JVM/JAR binary input. More...
 
struct  permitted_subclasses_attribute
 A PermittedSubclasses attribute. More...
 
struct  primitive_type_descriptor
 A primitive JVM field descriptor. More...
 
struct  raw_code
 An undecoded Code body retained by tooling mode. More...
 
struct  record_attribute
 A Record attribute. More...
 
struct  record_component_info
 One component in a Record attribute. More...
 
struct  reference_type_signature
 A class, type-variable, or array reference type in a generic signature. More...
 
struct  runtime_invisible_annotations_attribute
 A RuntimeInvisibleAnnotations attribute. More...
 
struct  runtime_invisible_parameter_annotations_attribute
 A RuntimeInvisibleParameterAnnotations attribute. More...
 
struct  runtime_invisible_type_annotations_attribute
 A RuntimeInvisibleTypeAnnotations attribute. More...
 
struct  runtime_visible_annotations_attribute
 A RuntimeVisibleAnnotations attribute. More...
 
struct  runtime_visible_parameter_annotations_attribute
 A RuntimeVisibleParameterAnnotations attribute. More...
 
struct  runtime_visible_type_annotations_attribute
 A RuntimeVisibleTypeAnnotations attribute. More...
 
struct  same_frame
 A same_frame entry retaining its exact compact frame type. More...
 
struct  same_frame_extended
 A same_frame_extended entry. More...
 
struct  same_locals_one_stack_item_frame
 A same_locals_1_stack_item_frame entry. More...
 
struct  same_locals_one_stack_item_frame_extended
 A same_locals_1_stack_item_frame_extended entry. More...
 
struct  signature_attribute
 A Signature attribute. More...
 
struct  signature_parse_options
 Resource limits applied while parsing an untrusted generic signature. More...
 
struct  signed_byte_instruction
 A signed one-byte immediate instruction. More...
 
struct  signed_short_instruction
 A signed two-byte immediate instruction. More...
 
struct  simple_class_type_signature
 One simple class segment, including its type arguments. More...
 
struct  simple_instruction
 An instruction whose encoding contains only its opcode. More...
 
struct  source_debug_extension_attribute
 A SourceDebugExtension attribute whose bytes are not modified UTF-8. More...
 
struct  source_file_attribute
 A SourceFile attribute. More...
 
struct  stack_map_table_attribute
 A StackMapTable attribute. More...
 
struct  string_constant
 A CONSTANT_String entry. More...
 
struct  super_type_argument
 A super-bounded wildcard type argument. More...
 
struct  supertype_target_info
 A supertype annotation target. More...
 
struct  symbolic_class_instruction
 A symbolic class-reference instruction. More...
 
struct  symbolic_field_instruction
 A symbolic field-access instruction. More...
 
struct  symbolic_invokeinterface_instruction
 A symbolic interface-method invocation instruction. More...
 
struct  symbolic_method_instruction
 A symbolic class or interface method invocation instruction. More...
 
struct  symbolic_string_instruction
 A symbolic string ldc instruction. More...
 
struct  synthetic_attribute
 A Synthetic marker attribute. More...
 
struct  tableswitch_instruction
 An exact tableswitch instruction, including alignment bytes. More...
 
struct  throws_target_info
 A throws annotation target. More...
 
struct  top_variable_info
 A top verification type. More...
 
struct  type_annotation
 A JVM type_annotation structure. More...
 
struct  type_annotation_target
 A target_info paired with its compile-time target_type discriminator. More...
 
struct  type_argument_target_info
 A bytecode-offset and type-argument annotation target. More...
 
struct  type_parameter
 One generic type parameter and all of its declared bounds. More...
 
struct  type_parameter_bound_target_info
 A type-parameter-bound annotation target. More...
 
struct  type_parameter_target_info
 A type-parameter annotation target. More...
 
struct  type_path_entry
 One type_path component. More...
 
struct  type_variable_signature
 A generic type-variable reference. More...
 
struct  uninitialized_this_variable_info
 An uninitialized-this verification type. More...
 
struct  uninitialized_variable_info
 An uninitialized value created by a new instruction. More...
 
struct  unknown_attribute
 An unknown standard-extension or vendor attribute retained verbatim. More...
 
class  unsupported_feature_error
 Reports a deliberately unsupported JVM feature or analysis case. More...
 
struct  utf8_constant
 A CONSTANT_Utf8 entry. More...
 
struct  validation_diagnostic
 One class-file validation failure. More...
 
class  validation_error
 Reports that a structured class-file model violates a JVMS rule. More...
 
struct  validation_location
 A structured location within an owning class_file model. More...
 
struct  validation_options
 Controls strict structural and version-aware validation. More...
 
struct  validation_report
 The complete bounded diagnostic result of one validation pass. More...
 
struct  void_type_descriptor
 The void return descriptor. More...
 
struct  wide_iinc_instruction
 The wide iinc form following the wide prefix. More...
 
struct  wide_instruction
 A complete wide-prefixed instruction. More...
 
struct  wide_local_instruction
 A wide local-variable instruction following the wide prefix. More...
 
struct  zip_dos_date
 A packed MS-DOS date value from a ZIP entry header. More...
 
struct  zip_dos_time
 A packed MS-DOS time value from a ZIP entry header. More...
 
struct  zip_external_attributes
 Host-defined external attributes from a ZIP central-directory entry. More...
 
struct  zip_internal_attributes
 Host-defined internal attributes from a ZIP central-directory entry. More...
 

Typedefs

using verification_type_info = std::variant< top_variable_info, integer_variable_info, float_variable_info, double_variable_info, long_variable_info, null_variable_info, uninitialized_this_variable_info, object_variable_info, uninitialized_variable_info >
 A StackMapTable verification_type_info structure.
 
using stack_map_frame = std::variant< same_frame, same_locals_one_stack_item_frame, same_locals_one_stack_item_frame_extended, chop_frame, same_frame_extended, append_frame, full_frame >
 Any valid StackMapTable frame encoding.
 
using type_annotation_target_info = std::variant< type_annotation_target< type_annotation_target_type::class_type_parameter, type_parameter_target_info >, type_annotation_target< type_annotation_target_type::method_type_parameter, type_parameter_target_info >, type_annotation_target< type_annotation_target_type::class_extends, supertype_target_info >, type_annotation_target< type_annotation_target_type::class_type_parameter_bound, type_parameter_bound_target_info >, type_annotation_target< type_annotation_target_type::method_type_parameter_bound, type_parameter_bound_target_info >, type_annotation_target< type_annotation_target_type::field, empty_target_info >, type_annotation_target< type_annotation_target_type::method_return, empty_target_info >, type_annotation_target< type_annotation_target_type::method_receiver, empty_target_info >, type_annotation_target< type_annotation_target_type::method_formal_parameter, formal_parameter_target_info >, type_annotation_target< type_annotation_target_type::throws_, throws_target_info >, type_annotation_target< type_annotation_target_type::local_variable, local_variable_target_info >, type_annotation_target< type_annotation_target_type::resource_variable, local_variable_target_info >, type_annotation_target< type_annotation_target_type::exception_parameter, catch_target_info >, type_annotation_target< type_annotation_target_type::instanceof_, offset_target_info >, type_annotation_target< type_annotation_target_type::new_, offset_target_info >, type_annotation_target< type_annotation_target_type::constructor_reference, offset_target_info >, type_annotation_target< type_annotation_target_type::method_reference, offset_target_info >, type_annotation_target< type_annotation_target_type::cast, type_argument_target_info >, type_annotation_target< type_annotation_target_type::constructor_invocation_type_argument, type_argument_target_info >, type_annotation_target< type_annotation_target_type::method_invocation_type_argument, type_argument_target_info >, type_annotation_target< type_annotation_target_type::constructor_reference_type_argument, type_argument_target_info >, type_annotation_target< type_annotation_target_type::method_reference_type_argument, type_argument_target_info > >
 Any valid type-annotation target_info structure.
 
using record_component_attribute = std::variant< signature_attribute, runtime_visible_annotations_attribute, runtime_invisible_annotations_attribute, runtime_visible_type_annotations_attribute, runtime_invisible_type_annotations_attribute, unknown_attribute >
 Attributes valid in a record_component_info structure.
 
using code_nested_attribute = std::variant< stack_map_table_attribute, line_number_table_attribute, local_variable_table_attribute, local_variable_type_table_attribute, runtime_visible_type_annotations_attribute, runtime_invisible_type_annotations_attribute, unknown_attribute >
 Attributes valid within a Code attribute.
 
using field_attribute = std::variant< constant_value_attribute, synthetic_attribute, signature_attribute, deprecated_attribute, runtime_visible_annotations_attribute, runtime_invisible_annotations_attribute, runtime_visible_type_annotations_attribute, runtime_invisible_type_annotations_attribute, unknown_attribute >
 Attributes valid on a field_info structure.
 
using method_attribute = std::variant< code_attribute, exceptions_attribute, synthetic_attribute, signature_attribute, deprecated_attribute, runtime_visible_annotations_attribute, runtime_invisible_annotations_attribute, runtime_visible_parameter_annotations_attribute, runtime_invisible_parameter_annotations_attribute, runtime_visible_type_annotations_attribute, runtime_invisible_type_annotations_attribute, annotation_default_attribute, method_parameters_attribute, unknown_attribute >
 Attributes valid on a method_info structure.
 
using class_attribute = std::variant< inner_classes_attribute, enclosing_method_attribute, synthetic_attribute, signature_attribute, source_file_attribute, source_debug_extension_attribute, deprecated_attribute, runtime_visible_annotations_attribute, runtime_invisible_annotations_attribute, runtime_visible_type_annotations_attribute, runtime_invisible_type_annotations_attribute, bootstrap_methods_attribute, module_attribute, module_packages_attribute, module_main_class_attribute, nest_host_attribute, nest_members_attribute, record_attribute, permitted_subclasses_attribute, unknown_attribute >
 Attributes valid on a ClassFile structure.
 
using assembly_element = std::variant< instruction, label_binding, labeled_branch_instruction< opcode::ifeq >, labeled_branch_instruction< opcode::ifne >, labeled_branch_instruction< opcode::iflt >, labeled_branch_instruction< opcode::ifge >, labeled_branch_instruction< opcode::ifgt >, labeled_branch_instruction< opcode::ifle >, labeled_branch_instruction< opcode::if_icmpeq >, labeled_branch_instruction< opcode::if_icmpne >, labeled_branch_instruction< opcode::if_icmplt >, labeled_branch_instruction< opcode::if_icmpge >, labeled_branch_instruction< opcode::if_icmpgt >, labeled_branch_instruction< opcode::if_icmple >, labeled_branch_instruction< opcode::if_acmpeq >, labeled_branch_instruction< opcode::if_acmpne >, labeled_branch_instruction< opcode::goto_ >, labeled_branch_instruction< opcode::jsr >, labeled_branch_instruction< opcode::ifnull >, labeled_branch_instruction< opcode::ifnonnull >, labeled_tableswitch_instruction, labeled_lookupswitch_instruction, symbolic_field_instruction< opcode::getstatic >, symbolic_field_instruction< opcode::putstatic >, symbolic_field_instruction< opcode::getfield >, symbolic_field_instruction< opcode::putfield >, symbolic_method_instruction< opcode::invokevirtual >, symbolic_method_instruction< opcode::invokespecial >, symbolic_method_instruction< opcode::invokestatic >, symbolic_invokeinterface_instruction, symbolic_class_instruction< opcode::new_ >, symbolic_class_instruction< opcode::anewarray >, symbolic_class_instruction< opcode::checkcast >, symbolic_class_instruction< opcode::instanceof_ >, symbolic_string_instruction >
 Every element accepted by code_builder before lowering.
 
using wide_operand = std::variant< wide_local_instruction< opcode::iload >, wide_local_instruction< opcode::lload >, wide_local_instruction< opcode::fload >, wide_local_instruction< opcode::dload >, wide_local_instruction< opcode::aload >, wide_local_instruction< opcode::istore >, wide_local_instruction< opcode::lstore >, wide_local_instruction< opcode::fstore >, wide_local_instruction< opcode::dstore >, wide_local_instruction< opcode::astore >, wide_local_instruction< opcode::ret >, wide_iinc_instruction >
 Exact operand of a wide-prefixed instruction.
 
using instruction = std::variant< simple_instruction< opcode::nop >, simple_instruction< opcode::aconst_null >, simple_instruction< opcode::iconst_m1 >, simple_instruction< opcode::iconst_0 >, simple_instruction< opcode::iconst_1 >, simple_instruction< opcode::iconst_2 >, simple_instruction< opcode::iconst_3 >, simple_instruction< opcode::iconst_4 >, simple_instruction< opcode::iconst_5 >, simple_instruction< opcode::lconst_0 >, simple_instruction< opcode::lconst_1 >, simple_instruction< opcode::fconst_0 >, simple_instruction< opcode::fconst_1 >, simple_instruction< opcode::fconst_2 >, simple_instruction< opcode::dconst_0 >, simple_instruction< opcode::dconst_1 >, signed_byte_instruction< opcode::bipush >, signed_short_instruction< opcode::sipush >, constant_pool_index8_instruction< opcode::ldc >, constant_pool_index16_instruction< opcode::ldc_w >, constant_pool_index16_instruction< opcode::ldc2_w >, local_instruction< opcode::iload >, local_instruction< opcode::lload >, local_instruction< opcode::fload >, local_instruction< opcode::dload >, local_instruction< opcode::aload >, simple_instruction< opcode::iload_0 >, simple_instruction< opcode::iload_1 >, simple_instruction< opcode::iload_2 >, simple_instruction< opcode::iload_3 >, simple_instruction< opcode::lload_0 >, simple_instruction< opcode::lload_1 >, simple_instruction< opcode::lload_2 >, simple_instruction< opcode::lload_3 >, simple_instruction< opcode::fload_0 >, simple_instruction< opcode::fload_1 >, simple_instruction< opcode::fload_2 >, simple_instruction< opcode::fload_3 >, simple_instruction< opcode::dload_0 >, simple_instruction< opcode::dload_1 >, simple_instruction< opcode::dload_2 >, simple_instruction< opcode::dload_3 >, simple_instruction< opcode::aload_0 >, simple_instruction< opcode::aload_1 >, simple_instruction< opcode::aload_2 >, simple_instruction< opcode::aload_3 >, simple_instruction< opcode::iaload >, simple_instruction< opcode::laload >, simple_instruction< opcode::faload >, simple_instruction< opcode::daload >, simple_instruction< opcode::aaload >, simple_instruction< opcode::baload >, simple_instruction< opcode::caload >, simple_instruction< opcode::saload >, local_instruction< opcode::istore >, local_instruction< opcode::lstore >, local_instruction< opcode::fstore >, local_instruction< opcode::dstore >, local_instruction< opcode::astore >, simple_instruction< opcode::istore_0 >, simple_instruction< opcode::istore_1 >, simple_instruction< opcode::istore_2 >, simple_instruction< opcode::istore_3 >, simple_instruction< opcode::lstore_0 >, simple_instruction< opcode::lstore_1 >, simple_instruction< opcode::lstore_2 >, simple_instruction< opcode::lstore_3 >, simple_instruction< opcode::fstore_0 >, simple_instruction< opcode::fstore_1 >, simple_instruction< opcode::fstore_2 >, simple_instruction< opcode::fstore_3 >, simple_instruction< opcode::dstore_0 >, simple_instruction< opcode::dstore_1 >, simple_instruction< opcode::dstore_2 >, simple_instruction< opcode::dstore_3 >, simple_instruction< opcode::astore_0 >, simple_instruction< opcode::astore_1 >, simple_instruction< opcode::astore_2 >, simple_instruction< opcode::astore_3 >, simple_instruction< opcode::iastore >, simple_instruction< opcode::lastore >, simple_instruction< opcode::fastore >, simple_instruction< opcode::dastore >, simple_instruction< opcode::aastore >, simple_instruction< opcode::bastore >, simple_instruction< opcode::castore >, simple_instruction< opcode::sastore >, simple_instruction< opcode::pop >, simple_instruction< opcode::pop2 >, simple_instruction< opcode::dup >, simple_instruction< opcode::dup_x1 >, simple_instruction< opcode::dup_x2 >, simple_instruction< opcode::dup2 >, simple_instruction< opcode::dup2_x1 >, simple_instruction< opcode::dup2_x2 >, simple_instruction< opcode::swap >, simple_instruction< opcode::iadd >, simple_instruction< opcode::ladd >, simple_instruction< opcode::fadd >, simple_instruction< opcode::dadd >, simple_instruction< opcode::isub >, simple_instruction< opcode::lsub >, simple_instruction< opcode::fsub >, simple_instruction< opcode::dsub >, simple_instruction< opcode::imul >, simple_instruction< opcode::lmul >, simple_instruction< opcode::fmul >, simple_instruction< opcode::dmul >, simple_instruction< opcode::idiv >, simple_instruction< opcode::ldiv >, simple_instruction< opcode::fdiv >, simple_instruction< opcode::ddiv >, simple_instruction< opcode::irem >, simple_instruction< opcode::lrem >, simple_instruction< opcode::frem >, simple_instruction< opcode::drem >, simple_instruction< opcode::ineg >, simple_instruction< opcode::lneg >, simple_instruction< opcode::fneg >, simple_instruction< opcode::dneg >, simple_instruction< opcode::ishl >, simple_instruction< opcode::lshl >, simple_instruction< opcode::ishr >, simple_instruction< opcode::lshr >, simple_instruction< opcode::iushr >, simple_instruction< opcode::lushr >, simple_instruction< opcode::iand >, simple_instruction< opcode::land >, simple_instruction< opcode::ior >, simple_instruction< opcode::lor >, simple_instruction< opcode::ixor >, simple_instruction< opcode::lxor >, iinc_instruction, simple_instruction< opcode::i2l >, simple_instruction< opcode::i2f >, simple_instruction< opcode::i2d >, simple_instruction< opcode::l2i >, simple_instruction< opcode::l2f >, simple_instruction< opcode::l2d >, simple_instruction< opcode::f2i >, simple_instruction< opcode::f2l >, simple_instruction< opcode::f2d >, simple_instruction< opcode::d2i >, simple_instruction< opcode::d2l >, simple_instruction< opcode::d2f >, simple_instruction< opcode::i2b >, simple_instruction< opcode::i2c >, simple_instruction< opcode::i2s >, simple_instruction< opcode::lcmp >, simple_instruction< opcode::fcmpl >, simple_instruction< opcode::fcmpg >, simple_instruction< opcode::dcmpl >, simple_instruction< opcode::dcmpg >, branch16_instruction< opcode::ifeq >, branch16_instruction< opcode::ifne >, branch16_instruction< opcode::iflt >, branch16_instruction< opcode::ifge >, branch16_instruction< opcode::ifgt >, branch16_instruction< opcode::ifle >, branch16_instruction< opcode::if_icmpeq >, branch16_instruction< opcode::if_icmpne >, branch16_instruction< opcode::if_icmplt >, branch16_instruction< opcode::if_icmpge >, branch16_instruction< opcode::if_icmpgt >, branch16_instruction< opcode::if_icmple >, branch16_instruction< opcode::if_acmpeq >, branch16_instruction< opcode::if_acmpne >, branch16_instruction< opcode::goto_ >, branch16_instruction< opcode::jsr >, local_instruction< opcode::ret >, tableswitch_instruction, lookupswitch_instruction, simple_instruction< opcode::ireturn >, simple_instruction< opcode::lreturn >, simple_instruction< opcode::freturn >, simple_instruction< opcode::dreturn >, simple_instruction< opcode::areturn >, simple_instruction< opcode::return_ >, constant_pool_index16_instruction< opcode::getstatic >, constant_pool_index16_instruction< opcode::putstatic >, constant_pool_index16_instruction< opcode::getfield >, constant_pool_index16_instruction< opcode::putfield >, constant_pool_index16_instruction< opcode::invokevirtual >, constant_pool_index16_instruction< opcode::invokespecial >, constant_pool_index16_instruction< opcode::invokestatic >, invokeinterface_instruction, invokedynamic_instruction, constant_pool_index16_instruction< opcode::new_ >, newarray_instruction, constant_pool_index16_instruction< opcode::anewarray >, simple_instruction< opcode::arraylength >, simple_instruction< opcode::athrow >, constant_pool_index16_instruction< opcode::checkcast >, constant_pool_index16_instruction< opcode::instanceof_ >, simple_instruction< opcode::monitorenter >, simple_instruction< opcode::monitorexit >, wide_instruction, multianewarray_instruction, branch16_instruction< opcode::ifnull >, branch16_instruction< opcode::ifnonnull >, branch32_instruction< opcode::goto_w >, branch32_instruction< opcode::jsr_w >, simple_instruction< opcode::breakpoint >, simple_instruction< opcode::impdep1 >, simple_instruction< opcode::impdep2 > >
 Every exact JVM instruction encoding supported by Java SE 26.
 
using code_body = std::variant< instruction_sequence, raw_code >
 Either a decoded instruction sequence or an exact raw tooling payload.
 
using field_type_descriptor = rpnx::variant< primitive_type_descriptor, object_type_descriptor, array_type_descriptor >
 Any JVM field descriptor.
 
using return_type_descriptor = rpnx::variant< void_type_descriptor, field_type_descriptor >
 A JVM method return descriptor.
 
using type_argument = std::variant< any_type_argument, exact_type_argument, extends_type_argument, super_type_argument >
 One generic class type argument.
 
using method_result_signature = std::variant< void_type_descriptor, java_type_signature >
 A void or Java-type method result signature.
 
using throws_signature = std::variant< class_type_signature, type_variable_signature >
 A declared throws signature for a class or type-variable exception.
 
using constant_pool_entry = std::variant< utf8_constant, integer_constant, float_constant, long_constant, double_constant, class_constant, string_constant, fieldref_constant, methodref_constant, interface_methodref_constant, name_and_type_constant, method_handle_constant, method_type_constant, dynamic_constant, invoke_dynamic_constant, module_constant, package_constant >
 A typed JVM constant-pool entry.
 

Enumerations

enum class  annotation_constant_kind : std::uint8_t {
  byte = 'B' , character = 'C' , double_precision = 'D' , floating_point = 'F' ,
  integer = 'I' , long_integer = 'J' , short_integer = 'S' , boolean = 'Z' ,
  string = 's'
}
 Constant-valued annotation element tags. More...
 
enum class  type_annotation_target_type : std::uint8_t {
  class_type_parameter = 0x00 , method_type_parameter = 0x01 , class_extends = 0x10 , class_type_parameter_bound = 0x11 ,
  method_type_parameter_bound = 0x12 , field = 0x13 , method_return = 0x14 , method_receiver = 0x15 ,
  method_formal_parameter = 0x16 , throws_ = 0x17 , local_variable = 0x40 , resource_variable = 0x41 ,
  exception_parameter = 0x42 , instanceof_ = 0x43 , new_ = 0x44 , constructor_reference = 0x45 ,
  method_reference = 0x46 , cast = 0x47 , constructor_invocation_type_argument = 0x48 , method_invocation_type_argument = 0x49 ,
  constructor_reference_type_argument = 0x4A , method_reference_type_argument = 0x4B
}
 A type-annotation target discriminator. More...
 
enum class  type_path_kind : std::uint8_t { array = 0 , nested = 1 , wildcard_bound = 2 , type_argument = 3 }
 A type_path component kind. More...
 
enum class  method_parameter_access_flags : std::uint16_t { none = 0 , is_final = 0x0010 , is_synthetic = 0x1000 , is_mandated = 0x8000 }
 JVM MethodParameters access flags. More...
 
enum class  module_access_flags : std::uint16_t { none = 0 , is_open = 0x0020 , is_synthetic = 0x1000 , is_mandated = 0x8000 }
 JVM module declaration flags. More...
 
enum class  module_requires_flags : std::uint16_t {
  none = 0 , is_transitive = 0x0020 , is_static_phase = 0x0040 , is_synthetic = 0x1000 ,
  is_mandated = 0x8000
}
 JVM module requires flags. More...
 
enum class  module_exports_opens_flags : std::uint16_t { none = 0 , is_synthetic = 0x1000 , is_mandated = 0x8000 }
 JVM module exports and opens flags. More...
 
enum class  method_owner_kind : std::uint8_t { class_ , interface }
 Selects the constant-pool owner kind for a symbolic method reference. More...
 
enum class  processing_mode : std::uint8_t { strict , tooling }
 Controls whether invalid-but-preservable tool input is accepted. More...
 
enum class  newarray_type : std::uint8_t {
  boolean = 4 , character = 5 , floating_point = 6 , double_precision = 7 ,
  byte = 8 , short_integer = 9 , integer = 10 , long_integer = 11
}
 Primitive array types accepted by the newarray instruction. More...
 
enum class  opcode : std::uint8_t {
  nop = 0x00 , aconst_null = 0x01 , iconst_m1 = 0x02 , iconst_0 = 0x03 ,
  iconst_1 = 0x04 , iconst_2 = 0x05 , iconst_3 = 0x06 , iconst_4 = 0x07 ,
  iconst_5 = 0x08 , lconst_0 = 0x09 , lconst_1 = 0x0A , fconst_0 = 0x0B ,
  fconst_1 = 0x0C , fconst_2 = 0x0D , dconst_0 = 0x0E , dconst_1 = 0x0F ,
  bipush = 0x10 , sipush = 0x11 , ldc = 0x12 , ldc_w = 0x13 ,
  ldc2_w = 0x14 , iload = 0x15 , lload = 0x16 , fload = 0x17 ,
  dload = 0x18 , aload = 0x19 , iload_0 = 0x1A , iload_1 = 0x1B ,
  iload_2 = 0x1C , iload_3 = 0x1D , lload_0 = 0x1E , lload_1 = 0x1F ,
  lload_2 = 0x20 , lload_3 = 0x21 , fload_0 = 0x22 , fload_1 = 0x23 ,
  fload_2 = 0x24 , fload_3 = 0x25 , dload_0 = 0x26 , dload_1 = 0x27 ,
  dload_2 = 0x28 , dload_3 = 0x29 , aload_0 = 0x2A , aload_1 = 0x2B ,
  aload_2 = 0x2C , aload_3 = 0x2D , iaload = 0x2E , laload = 0x2F ,
  faload = 0x30 , daload = 0x31 , aaload = 0x32 , baload = 0x33 ,
  caload = 0x34 , saload = 0x35 , istore = 0x36 , lstore = 0x37 ,
  fstore = 0x38 , dstore = 0x39 , astore = 0x3A , istore_0 = 0x3B ,
  istore_1 = 0x3C , istore_2 = 0x3D , istore_3 = 0x3E , lstore_0 = 0x3F ,
  lstore_1 = 0x40 , lstore_2 = 0x41 , lstore_3 = 0x42 , fstore_0 = 0x43 ,
  fstore_1 = 0x44 , fstore_2 = 0x45 , fstore_3 = 0x46 , dstore_0 = 0x47 ,
  dstore_1 = 0x48 , dstore_2 = 0x49 , dstore_3 = 0x4A , astore_0 = 0x4B ,
  astore_1 = 0x4C , astore_2 = 0x4D , astore_3 = 0x4E , iastore = 0x4F ,
  lastore = 0x50 , fastore = 0x51 , dastore = 0x52 , aastore = 0x53 ,
  bastore = 0x54 , castore = 0x55 , sastore = 0x56 , pop = 0x57 ,
  pop2 = 0x58 , dup = 0x59 , dup_x1 = 0x5A , dup_x2 = 0x5B ,
  dup2 = 0x5C , dup2_x1 = 0x5D , dup2_x2 = 0x5E , swap = 0x5F ,
  iadd = 0x60 , ladd = 0x61 , fadd = 0x62 , dadd = 0x63 ,
  isub = 0x64 , lsub = 0x65 , fsub = 0x66 , dsub = 0x67 ,
  imul = 0x68 , lmul = 0x69 , fmul = 0x6A , dmul = 0x6B ,
  idiv = 0x6C , ldiv = 0x6D , fdiv = 0x6E , ddiv = 0x6F ,
  irem = 0x70 , lrem = 0x71 , frem = 0x72 , drem = 0x73 ,
  ineg = 0x74 , lneg = 0x75 , fneg = 0x76 , dneg = 0x77 ,
  ishl = 0x78 , lshl = 0x79 , ishr = 0x7A , lshr = 0x7B ,
  iushr = 0x7C , lushr = 0x7D , iand = 0x7E , land = 0x7F ,
  ior = 0x80 , lor = 0x81 , ixor = 0x82 , lxor = 0x83 ,
  iinc = 0x84 , i2l = 0x85 , i2f = 0x86 , i2d = 0x87 ,
  l2i = 0x88 , l2f = 0x89 , l2d = 0x8A , f2i = 0x8B ,
  f2l = 0x8C , f2d = 0x8D , d2i = 0x8E , d2l = 0x8F ,
  d2f = 0x90 , i2b = 0x91 , i2c = 0x92 , i2s = 0x93 ,
  lcmp = 0x94 , fcmpl = 0x95 , fcmpg = 0x96 , dcmpl = 0x97 ,
  dcmpg = 0x98 , ifeq = 0x99 , ifne = 0x9A , iflt = 0x9B ,
  ifge = 0x9C , ifgt = 0x9D , ifle = 0x9E , if_icmpeq = 0x9F ,
  if_icmpne = 0xA0 , if_icmplt = 0xA1 , if_icmpge = 0xA2 , if_icmpgt = 0xA3 ,
  if_icmple = 0xA4 , if_acmpeq = 0xA5 , if_acmpne = 0xA6 , goto_ = 0xA7 ,
  jsr = 0xA8 , ret = 0xA9 , tableswitch = 0xAA , lookupswitch = 0xAB ,
  ireturn = 0xAC , lreturn = 0xAD , freturn = 0xAE , dreturn = 0xAF ,
  areturn = 0xB0 , return_ = 0xB1 , getstatic = 0xB2 , putstatic = 0xB3 ,
  getfield = 0xB4 , putfield = 0xB5 , invokevirtual = 0xB6 , invokespecial = 0xB7 ,
  invokestatic = 0xB8 , invokeinterface = 0xB9 , invokedynamic = 0xBA , new_ = 0xBB ,
  newarray = 0xBC , anewarray = 0xBD , arraylength = 0xBE , athrow = 0xBF ,
  checkcast = 0xC0 , instanceof_ = 0xC1 , monitorenter = 0xC2 , monitorexit = 0xC3 ,
  wide = 0xC4 , multianewarray = 0xC5 , ifnull = 0xC6 , ifnonnull = 0xC7 ,
  goto_w = 0xC8 , jsr_w = 0xC9 , breakpoint = 0xCA , impdep1 = 0xFE ,
  impdep2 = 0xFF
}
 Every defined Java SE 26 opcode, plus the three permanently reserved opcodes. More...
 
enum class  primitive_descriptor_kind : std::uint8_t {
  byte = 'B' , character = 'C' , double_precision = 'D' , floating_point = 'F' ,
  integer = 'I' , long_integer = 'J' , short_integer = 'S' , boolean = 'Z'
}
 Primitive field-descriptor kinds. More...
 
enum class  constant_pool_tag : std::uint8_t {
  utf8 = 1 , integer = 3 , floating_point = 4 , long_integer = 5 ,
  double_precision = 6 , class_reference = 7 , string = 8 , field_reference = 9 ,
  method_reference = 10 , interface_method_reference = 11 , name_and_type = 12 , method_handle = 15 ,
  method_type = 16 , dynamic = 17 , invoke_dynamic = 18 , module = 19 ,
  package = 20
}
 A JVM constant-pool tag from JVMS section 4.4. More...
 
enum class  method_handle_reference_kind : std::uint8_t {
  get_field = 1 , get_static = 2 , put_field = 3 , put_static = 4 ,
  invoke_virtual = 5 , invoke_static = 6 , invoke_special = 7 , new_invoke_special = 8 ,
  invoke_interface = 9
}
 Valid reference-kind discriminators for CONSTANT_MethodHandle. More...
 
enum class  class_access_flags : std::uint16_t {
  none = 0 , is_public = 0x0001 , is_final = 0x0010 , invokes_special_super = 0x0020 ,
  is_interface = 0x0200 , is_abstract = 0x0400 , is_synthetic = 0x1000 , is_annotation = 0x2000 ,
  is_enum = 0x4000 , is_module = 0x8000
}
 JVM class access flags. More...
 
enum class  field_access_flags : std::uint16_t {
  none = 0 , is_public = 0x0001 , is_private = 0x0002 , is_protected = 0x0004 ,
  is_static = 0x0008 , is_final = 0x0010 , is_volatile = 0x0040 , is_transient = 0x0080 ,
  is_synthetic = 0x1000 , is_enum = 0x4000
}
 JVM field access flags. More...
 
enum class  method_access_flags : std::uint16_t {
  none = 0 , is_public = 0x0001 , is_private = 0x0002 , is_protected = 0x0004 ,
  is_static = 0x0008 , is_final = 0x0010 , is_synchronized = 0x0020 , is_bridge = 0x0040 ,
  has_variable_arguments = 0x0080 , is_native = 0x0100 , is_abstract = 0x0400 , is_strict = 0x0800 ,
  is_synthetic = 0x1000
}
 JVM method access flags. More...
 
enum class  compression_method : std::uint16_t { stored = 0 , deflated = 8 }
 Compression methods supported by JAR serialization. More...
 
enum class  jar_entry_flags : std::uint16_t { none = 0 , utf8_names = 0x0800 }
 JAR entry flags preserved by this library. More...
 
enum class  validation_code : std::uint16_t {
  invalid_version , invalid_constant_pool_index , invalid_constant_pool_reference_kind , feature_not_supported_by_version ,
  invalid_flags , invalid_descriptor , invalid_attribute_name , duplicate_attribute ,
  missing_code_attribute , unexpected_code_attribute , invalid_code , invalid_branch_target ,
  invalid_switch_table , invalid_exception_range , invalid_stack_map , invalid_annotation ,
  invalid_module_structure , resource_limit_exceeded
}
 Stable machine-readable codes emitted by class-file validation. More...
 
enum class  validation_location_kind : std::uint8_t {
  class_file , constant_pool , interface , field ,
  method , class_attribute , field_attribute , method_attribute ,
  code , code_attribute , record_component
}
 The class-file area associated with a diagnostic. More...
 

Functions

template<typename Visitor>
bool visit_instruction_type (opcode operation, Visitor &&visitor)
 Invokes a visitor with the instruction type associated with a runtime opcode.
 
opcode instruction_opcode (instruction const &value) noexcept
 Returns the opcode of a structured instruction.
 
std::size_t instruction_size (instruction const &value, code_offset offset)
 Returns the exact encoded size of an instruction at the supplied byte offset.
 
code_body deserialize_instructions (std::span< std::byte const > bytes, bytecode_read_options const &options={})
 Decodes an entire JVM code array.
 
std::vector< std::byte > serialize_instructions (code_body const &value, bytecode_write_options const &options={})
 Encodes an entire JVM code array.
 
template<typename OutputIt>
auto serialize_iter (code_body const &value, OutputIt output, bytecode_write_options const &options={}) -> OutputIt
 Serial4-style bytecode output-iterator interface.
 
template<typename OutputIt>
auto serialize_iter (code_body const &value, OutputIt output, OutputIt end, bytecode_write_options const &options={}) -> OutputIt
 Serial4-style bounded bytecode output-iterator interface.
 
template<std::forward_iterator InputIt, std::sentinel_for< InputIt > Sentinel>
auto deserialize_iter (code_body &value, InputIt input, Sentinel end, bytecode_read_options const &options={}) -> InputIt
 Serial4-style bytecode forward-iterator interface.
 
std::vector< std::byte > serialize_class_file (class_file const &value, class_file_write_options const &options={})
 Serializes a class file using the big-endian JVM class-file format.
 
class_file deserialize_class_file (std::span< std::byte const > bytes, class_file_read_options const &options={})
 Deserializes exactly one class file and rejects trailing bytes.
 
deserialization_result< class_filedeserialize_class_file_prefix (std::span< std::byte const > bytes, class_file_read_options const &options={})
 Deserializes one class file prefix and reports the number of bytes consumed.
 
template<typename OutputIt>
auto serialize_iter (class_file const &value, OutputIt output, class_file_write_options const &options={}) -> OutputIt
 Serial4-style output-iterator interface for JVM class-file bytes.
 
template<typename OutputIt>
auto serialize_iter (class_file const &value, OutputIt output, OutputIt end, class_file_write_options const &options={}) -> OutputIt
 Serial4-style bounded output-iterator interface for JVM class-file bytes.
 
template<std::forward_iterator InputIt, std::sentinel_for< InputIt > Sentinel>
auto deserialize_iter (class_file &value, InputIt input, Sentinel end, class_file_read_options const &options={}) -> InputIt
 Serial4-style bounded forward-iterator interface for JVM class-file bytes.
 
field_type_descriptor parse_field_descriptor (std::string_view text)
 Parses exactly one field descriptor.
 
method_descriptor parse_method_descriptor (std::string_view text)
 Parses exactly one method descriptor and enforces the 255-slot parameter limit.
 
std::string serialize_field_descriptor (field_type_descriptor const &descriptor)
 Encodes one field descriptor.
 
std::string serialize_method_descriptor (method_descriptor const &descriptor)
 Encodes one method descriptor.
 
std::size_t descriptor_slot_count (field_type_descriptor const &descriptor) noexcept
 Returns the number of JVM local/operand slots occupied by a field descriptor.
 
std::vector< std::byte > serialize_jar (jar_file const &value)
 Serializes an archive as a non-Zip64 JAR-compatible ZIP file.
 
jar_file deserialize_jar (std::span< std::byte const > bytes, jar_read_options const &options={})
 Deserializes exactly one JAR archive and validates entry sizes and CRC-32 values.
 
template<typename OutputIt>
auto serialize_iter (jar_file const &value, OutputIt output) -> OutputIt
 Serial4-style output-iterator interface for JAR bytes.
 
template<typename OutputIt>
auto serialize_iter (jar_file const &value, OutputIt output, OutputIt end) -> OutputIt
 Serial4-style bounded output-iterator interface for JAR bytes.
 
template<std::forward_iterator InputIt, std::sentinel_for< InputIt > Sentinel>
auto deserialize_iter (jar_file &value, InputIt input, Sentinel end) -> InputIt
 Serial4-style bounded forward-iterator interface for JAR bytes.
 
reference_type_signature parse_field_signature (std::string_view text, signature_parse_options const &options={})
 Parses a complete field or record-component generic signature.
 
class_signature parse_class_signature (std::string_view text, signature_parse_options const &options={})
 Parses a complete class generic signature.
 
method_signature parse_method_signature (std::string_view text, signature_parse_options const &options={})
 Parses a complete method generic signature.
 
std::string serialize_field_signature (reference_type_signature const &signature)
 Serializes a field or record-component generic signature.
 
std::string serialize_class_signature (class_signature const &signature)
 Serializes a class generic signature.
 
std::string serialize_method_signature (method_signature const &signature)
 Serializes a method generic signature.
 
constexpr class_access_flags operator| (class_access_flags left, class_access_flags right) noexcept
 Combines JVM class access flags without discarding their domain type.
 
constexpr field_access_flags operator| (field_access_flags left, field_access_flags right) noexcept
 Combines JVM field access flags without discarding their domain type.
 
constexpr method_access_flags operator| (method_access_flags left, method_access_flags right) noexcept
 Combines JVM method access flags without discarding their domain type.
 
validation_report validate_class_file (class_file const &value, validation_options const &options={})
 Validates a complete class-file model without throwing for model errors.
 

Variables

constexpr std::uint32_t class_file_magic = 0xCAFEBABEU
 The fixed magic value at the start of every JVM class file.
 

Detailed Description

JVM class-file, bytecode, validation, generation, and JAR APIs.

Typedef Documentation

◆ assembly_element

using rpnx::cortado::assembly_element = std::variant< instruction, label_binding, labeled_branch_instruction< opcode::ifeq >, labeled_branch_instruction< opcode::ifne >, labeled_branch_instruction< opcode::iflt >, labeled_branch_instruction< opcode::ifge >, labeled_branch_instruction< opcode::ifgt >, labeled_branch_instruction< opcode::ifle >, labeled_branch_instruction< opcode::if_icmpeq >, labeled_branch_instruction< opcode::if_icmpne >, labeled_branch_instruction< opcode::if_icmplt >, labeled_branch_instruction< opcode::if_icmpge >, labeled_branch_instruction< opcode::if_icmpgt >, labeled_branch_instruction< opcode::if_icmple >, labeled_branch_instruction< opcode::if_acmpeq >, labeled_branch_instruction< opcode::if_acmpne >, labeled_branch_instruction< opcode::goto_ >, labeled_branch_instruction< opcode::jsr >, labeled_branch_instruction< opcode::ifnull >, labeled_branch_instruction< opcode::ifnonnull >, labeled_tableswitch_instruction, labeled_lookupswitch_instruction, symbolic_field_instruction< opcode::getstatic >, symbolic_field_instruction< opcode::putstatic >, symbolic_field_instruction< opcode::getfield >, symbolic_field_instruction< opcode::putfield >, symbolic_method_instruction< opcode::invokevirtual >, symbolic_method_instruction< opcode::invokespecial >, symbolic_method_instruction< opcode::invokestatic >, symbolic_invokeinterface_instruction, symbolic_class_instruction< opcode::new_ >, symbolic_class_instruction< opcode::anewarray >, symbolic_class_instruction< opcode::checkcast >, symbolic_class_instruction< opcode::instanceof_ >, symbolic_string_instruction >

Every element accepted by code_builder before lowering.

Definition at line 173 of file builders.hpp.

◆ class_attribute

◆ code_body

Either a decoded instruction sequence or an exact raw tooling payload.

Definition at line 317 of file bytecode.hpp.

◆ code_nested_attribute

◆ constant_pool_entry

◆ field_attribute

◆ field_type_descriptor

Any JVM field descriptor.

The heap-backed RPNX variant permits recursion.

Definition at line 41 of file descriptors.hpp.

◆ instruction

using rpnx::cortado::instruction = std::variant< simple_instruction< opcode::nop >, simple_instruction< opcode::aconst_null >, simple_instruction< opcode::iconst_m1 >, simple_instruction< opcode::iconst_0 >, simple_instruction< opcode::iconst_1 >, simple_instruction< opcode::iconst_2 >, simple_instruction< opcode::iconst_3 >, simple_instruction< opcode::iconst_4 >, simple_instruction< opcode::iconst_5 >, simple_instruction< opcode::lconst_0 >, simple_instruction< opcode::lconst_1 >, simple_instruction< opcode::fconst_0 >, simple_instruction< opcode::fconst_1 >, simple_instruction< opcode::fconst_2 >, simple_instruction< opcode::dconst_0 >, simple_instruction< opcode::dconst_1 >, signed_byte_instruction< opcode::bipush >, signed_short_instruction< opcode::sipush >, constant_pool_index8_instruction< opcode::ldc >, constant_pool_index16_instruction< opcode::ldc_w >, constant_pool_index16_instruction< opcode::ldc2_w >, local_instruction< opcode::iload >, local_instruction< opcode::lload >, local_instruction< opcode::fload >, local_instruction< opcode::dload >, local_instruction< opcode::aload >, simple_instruction< opcode::iload_0 >, simple_instruction< opcode::iload_1 >, simple_instruction< opcode::iload_2 >, simple_instruction< opcode::iload_3 >, simple_instruction< opcode::lload_0 >, simple_instruction< opcode::lload_1 >, simple_instruction< opcode::lload_2 >, simple_instruction< opcode::lload_3 >, simple_instruction< opcode::fload_0 >, simple_instruction< opcode::fload_1 >, simple_instruction< opcode::fload_2 >, simple_instruction< opcode::fload_3 >, simple_instruction< opcode::dload_0 >, simple_instruction< opcode::dload_1 >, simple_instruction< opcode::dload_2 >, simple_instruction< opcode::dload_3 >, simple_instruction< opcode::aload_0 >, simple_instruction< opcode::aload_1 >, simple_instruction< opcode::aload_2 >, simple_instruction< opcode::aload_3 >, simple_instruction< opcode::iaload >, simple_instruction< opcode::laload >, simple_instruction< opcode::faload >, simple_instruction< opcode::daload >, simple_instruction< opcode::aaload >, simple_instruction< opcode::baload >, simple_instruction< opcode::caload >, simple_instruction< opcode::saload >, local_instruction< opcode::istore >, local_instruction< opcode::lstore >, local_instruction< opcode::fstore >, local_instruction< opcode::dstore >, local_instruction< opcode::astore >, simple_instruction< opcode::istore_0 >, simple_instruction< opcode::istore_1 >, simple_instruction< opcode::istore_2 >, simple_instruction< opcode::istore_3 >, simple_instruction< opcode::lstore_0 >, simple_instruction< opcode::lstore_1 >, simple_instruction< opcode::lstore_2 >, simple_instruction< opcode::lstore_3 >, simple_instruction< opcode::fstore_0 >, simple_instruction< opcode::fstore_1 >, simple_instruction< opcode::fstore_2 >, simple_instruction< opcode::fstore_3 >, simple_instruction< opcode::dstore_0 >, simple_instruction< opcode::dstore_1 >, simple_instruction< opcode::dstore_2 >, simple_instruction< opcode::dstore_3 >, simple_instruction< opcode::astore_0 >, simple_instruction< opcode::astore_1 >, simple_instruction< opcode::astore_2 >, simple_instruction< opcode::astore_3 >, simple_instruction< opcode::iastore >, simple_instruction< opcode::lastore >, simple_instruction< opcode::fastore >, simple_instruction< opcode::dastore >, simple_instruction< opcode::aastore >, simple_instruction< opcode::bastore >, simple_instruction< opcode::castore >, simple_instruction< opcode::sastore >, simple_instruction< opcode::pop >, simple_instruction< opcode::pop2 >, simple_instruction< opcode::dup >, simple_instruction< opcode::dup_x1 >, simple_instruction< opcode::dup_x2 >, simple_instruction< opcode::dup2 >, simple_instruction< opcode::dup2_x1 >, simple_instruction< opcode::dup2_x2 >, simple_instruction< opcode::swap >, simple_instruction< opcode::iadd >, simple_instruction< opcode::ladd >, simple_instruction< opcode::fadd >, simple_instruction< opcode::dadd >, simple_instruction< opcode::isub >, simple_instruction< opcode::lsub >, simple_instruction< opcode::fsub >, simple_instruction< opcode::dsub >, simple_instruction< opcode::imul >, simple_instruction< opcode::lmul >, simple_instruction< opcode::fmul >, simple_instruction< opcode::dmul >, simple_instruction< opcode::idiv >, simple_instruction< opcode::ldiv >, simple_instruction< opcode::fdiv >, simple_instruction< opcode::ddiv >, simple_instruction< opcode::irem >, simple_instruction< opcode::lrem >, simple_instruction< opcode::frem >, simple_instruction< opcode::drem >, simple_instruction< opcode::ineg >, simple_instruction< opcode::lneg >, simple_instruction< opcode::fneg >, simple_instruction< opcode::dneg >, simple_instruction< opcode::ishl >, simple_instruction< opcode::lshl >, simple_instruction< opcode::ishr >, simple_instruction< opcode::lshr >, simple_instruction< opcode::iushr >, simple_instruction< opcode::lushr >, simple_instruction< opcode::iand >, simple_instruction< opcode::land >, simple_instruction< opcode::ior >, simple_instruction< opcode::lor >, simple_instruction< opcode::ixor >, simple_instruction< opcode::lxor >, iinc_instruction, simple_instruction< opcode::i2l >, simple_instruction< opcode::i2f >, simple_instruction< opcode::i2d >, simple_instruction< opcode::l2i >, simple_instruction< opcode::l2f >, simple_instruction< opcode::l2d >, simple_instruction< opcode::f2i >, simple_instruction< opcode::f2l >, simple_instruction< opcode::f2d >, simple_instruction< opcode::d2i >, simple_instruction< opcode::d2l >, simple_instruction< opcode::d2f >, simple_instruction< opcode::i2b >, simple_instruction< opcode::i2c >, simple_instruction< opcode::i2s >, simple_instruction< opcode::lcmp >, simple_instruction< opcode::fcmpl >, simple_instruction< opcode::fcmpg >, simple_instruction< opcode::dcmpl >, simple_instruction< opcode::dcmpg >, branch16_instruction< opcode::ifeq >, branch16_instruction< opcode::ifne >, branch16_instruction< opcode::iflt >, branch16_instruction< opcode::ifge >, branch16_instruction< opcode::ifgt >, branch16_instruction< opcode::ifle >, branch16_instruction< opcode::if_icmpeq >, branch16_instruction< opcode::if_icmpne >, branch16_instruction< opcode::if_icmplt >, branch16_instruction< opcode::if_icmpge >, branch16_instruction< opcode::if_icmpgt >, branch16_instruction< opcode::if_icmple >, branch16_instruction< opcode::if_acmpeq >, branch16_instruction< opcode::if_acmpne >, branch16_instruction< opcode::goto_ >, branch16_instruction< opcode::jsr >, local_instruction< opcode::ret >, tableswitch_instruction, lookupswitch_instruction, simple_instruction< opcode::ireturn >, simple_instruction< opcode::lreturn >, simple_instruction< opcode::freturn >, simple_instruction< opcode::dreturn >, simple_instruction< opcode::areturn >, simple_instruction< opcode::return_ >, constant_pool_index16_instruction< opcode::getstatic >, constant_pool_index16_instruction< opcode::putstatic >, constant_pool_index16_instruction< opcode::getfield >, constant_pool_index16_instruction< opcode::putfield >, constant_pool_index16_instruction< opcode::invokevirtual >, constant_pool_index16_instruction< opcode::invokespecial >, constant_pool_index16_instruction< opcode::invokestatic >, invokeinterface_instruction, invokedynamic_instruction, constant_pool_index16_instruction< opcode::new_ >, newarray_instruction, constant_pool_index16_instruction< opcode::anewarray >, simple_instruction< opcode::arraylength >, simple_instruction< opcode::athrow >, constant_pool_index16_instruction< opcode::checkcast >, constant_pool_index16_instruction< opcode::instanceof_ >, simple_instruction< opcode::monitorenter >, simple_instruction< opcode::monitorexit >, wide_instruction, multianewarray_instruction, branch16_instruction< opcode::ifnull >, branch16_instruction< opcode::ifnonnull >, branch32_instruction< opcode::goto_w >, branch32_instruction< opcode::jsr_w >, simple_instruction< opcode::breakpoint >, simple_instruction< opcode::impdep1 >, simple_instruction< opcode::impdep2 > >

Every exact JVM instruction encoding supported by Java SE 26.

Definition at line 236 of file bytecode.hpp.

◆ method_attribute

◆ method_result_signature

A void or Java-type method result signature.

Definition at line 130 of file signatures.hpp.

◆ record_component_attribute

◆ return_type_descriptor

A JVM method return descriptor.

Definition at line 57 of file descriptors.hpp.

◆ stack_map_frame

◆ throws_signature

A declared throws signature for a class or type-variable exception.

Definition at line 133 of file signatures.hpp.

◆ type_annotation_target_info

using rpnx::cortado::type_annotation_target_info = std::variant< type_annotation_target< type_annotation_target_type::class_type_parameter, type_parameter_target_info >, type_annotation_target< type_annotation_target_type::method_type_parameter, type_parameter_target_info >, type_annotation_target< type_annotation_target_type::class_extends, supertype_target_info >, type_annotation_target< type_annotation_target_type::class_type_parameter_bound, type_parameter_bound_target_info >, type_annotation_target< type_annotation_target_type::method_type_parameter_bound, type_parameter_bound_target_info >, type_annotation_target< type_annotation_target_type::field, empty_target_info >, type_annotation_target< type_annotation_target_type::method_return, empty_target_info >, type_annotation_target< type_annotation_target_type::method_receiver, empty_target_info >, type_annotation_target< type_annotation_target_type::method_formal_parameter, formal_parameter_target_info >, type_annotation_target< type_annotation_target_type::throws_, throws_target_info >, type_annotation_target< type_annotation_target_type::local_variable, local_variable_target_info >, type_annotation_target< type_annotation_target_type::resource_variable, local_variable_target_info >, type_annotation_target< type_annotation_target_type::exception_parameter, catch_target_info >, type_annotation_target< type_annotation_target_type::instanceof_, offset_target_info >, type_annotation_target< type_annotation_target_type::new_, offset_target_info >, type_annotation_target< type_annotation_target_type::constructor_reference, offset_target_info >, type_annotation_target< type_annotation_target_type::method_reference, offset_target_info >, type_annotation_target< type_annotation_target_type::cast, type_argument_target_info >, type_annotation_target< type_annotation_target_type::constructor_invocation_type_argument, type_argument_target_info >, type_annotation_target< type_annotation_target_type::method_invocation_type_argument, type_argument_target_info >, type_annotation_target< type_annotation_target_type::constructor_reference_type_argument, type_argument_target_info >, type_annotation_target< type_annotation_target_type::method_reference_type_argument, type_argument_target_info > >

Any valid type-annotation target_info structure.

Definition at line 486 of file attributes.hpp.

◆ type_argument

One generic class type argument.

Definition at line 78 of file signatures.hpp.

◆ verification_type_info

◆ wide_operand

using rpnx::cortado::wide_operand = std::variant< wide_local_instruction< opcode::iload >, wide_local_instruction< opcode::lload >, wide_local_instruction< opcode::fload >, wide_local_instruction< opcode::dload >, wide_local_instruction< opcode::aload >, wide_local_instruction< opcode::istore >, wide_local_instruction< opcode::lstore >, wide_local_instruction< opcode::fstore >, wide_local_instruction< opcode::dstore >, wide_local_instruction< opcode::astore >, wide_local_instruction< opcode::ret >, wide_iinc_instruction >

Exact operand of a wide-prefixed instruction.

Definition at line 160 of file bytecode.hpp.

Enumeration Type Documentation

◆ annotation_constant_kind

enum class rpnx::cortado::annotation_constant_kind : std::uint8_t
strong

Constant-valued annotation element tags.

Definition at line 300 of file attributes.hpp.

◆ class_access_flags

enum class rpnx::cortado::class_access_flags : std::uint16_t
strong

JVM class access flags.

Values may be combined with operator|.

Definition at line 58 of file types.hpp.

◆ compression_method

enum class rpnx::cortado::compression_method : std::uint16_t
strong

Compression methods supported by JAR serialization.

Definition at line 248 of file types.hpp.

◆ constant_pool_tag

enum class rpnx::cortado::constant_pool_tag : std::uint8_t
strong

A JVM constant-pool tag from JVMS section 4.4.

Definition at line 30 of file types.hpp.

◆ field_access_flags

enum class rpnx::cortado::field_access_flags : std::uint16_t
strong

JVM field access flags.

Values may be combined with operator|.

Definition at line 67 of file types.hpp.

◆ jar_entry_flags

enum class rpnx::cortado::jar_entry_flags : std::uint16_t
strong

JAR entry flags preserved by this library.

Definition at line 251 of file types.hpp.

◆ method_access_flags

enum class rpnx::cortado::method_access_flags : std::uint16_t
strong

JVM method access flags.

Values may be combined with operator|.

Definition at line 76 of file types.hpp.

◆ method_handle_reference_kind

enum class rpnx::cortado::method_handle_reference_kind : std::uint8_t
strong

Valid reference-kind discriminators for CONSTANT_MethodHandle.

Definition at line 55 of file types.hpp.

◆ method_owner_kind

enum class rpnx::cortado::method_owner_kind : std::uint8_t
strong

Selects the constant-pool owner kind for a symbolic method reference.

Definition at line 133 of file builders.hpp.

◆ method_parameter_access_flags

enum class rpnx::cortado::method_parameter_access_flags : std::uint16_t
strong

JVM MethodParameters access flags.

Definition at line 550 of file attributes.hpp.

◆ module_access_flags

enum class rpnx::cortado::module_access_flags : std::uint16_t
strong

JVM module declaration flags.

Definition at line 569 of file attributes.hpp.

◆ module_exports_opens_flags

enum class rpnx::cortado::module_exports_opens_flags : std::uint16_t
strong

JVM module exports and opens flags.

Definition at line 575 of file attributes.hpp.

◆ module_requires_flags

enum class rpnx::cortado::module_requires_flags : std::uint16_t
strong

JVM module requires flags.

Definition at line 572 of file attributes.hpp.

◆ newarray_type

enum class rpnx::cortado::newarray_type : std::uint8_t
strong

Primitive array types accepted by the newarray instruction.

Definition at line 57 of file bytecode.hpp.

◆ opcode

enum class rpnx::cortado::opcode : std::uint8_t
strong

Every defined Java SE 26 opcode, plus the three permanently reserved opcodes.

Definition at line 60 of file bytecode.hpp.

◆ primitive_descriptor_kind

enum class rpnx::cortado::primitive_descriptor_kind : std::uint8_t
strong

Primitive field-descriptor kinds.

Definition at line 22 of file descriptors.hpp.

◆ processing_mode

enum class rpnx::cortado::processing_mode : std::uint8_t
strong

Controls whether invalid-but-preservable tool input is accepted.

Definition at line 26 of file bytecode.hpp.

◆ type_annotation_target_type

enum class rpnx::cortado::type_annotation_target_type : std::uint8_t
strong

A type-annotation target discriminator.

Definition at line 394 of file attributes.hpp.

◆ type_path_kind

enum class rpnx::cortado::type_path_kind : std::uint8_t
strong

A type_path component kind.

Definition at line 489 of file attributes.hpp.

◆ validation_code

enum class rpnx::cortado::validation_code : std::uint16_t
strong

Stable machine-readable codes emitted by class-file validation.

Definition at line 20 of file validation.hpp.

◆ validation_location_kind

enum class rpnx::cortado::validation_location_kind : std::uint8_t
strong

The class-file area associated with a diagnostic.

Definition at line 23 of file validation.hpp.

Function Documentation

◆ descriptor_slot_count()

std::size_t rpnx::cortado::descriptor_slot_count ( field_type_descriptor const & descriptor)
nodiscardnoexcept

Returns the number of JVM local/operand slots occupied by a field descriptor.

Parameters
descriptorType whose category is inspected.
Returns
Two for long and double; one for every other field type.

◆ deserialize_class_file()

class_file rpnx::cortado::deserialize_class_file ( std::span< std::byte const > bytes,
class_file_read_options const & options = {} )
nodiscard

Deserializes exactly one class file and rejects trailing bytes.

Parameters
bytesComplete class-file input.
optionsStrictness and resource limits.
Returns
A fully owning class-file model.
Exceptions
parse_errorif input is malformed, invalid in the selected mode, exceeds a limit, or has trailing bytes.

◆ deserialize_class_file_prefix()

deserialization_result< class_file > rpnx::cortado::deserialize_class_file_prefix ( std::span< std::byte const > bytes,
class_file_read_options const & options = {} )
nodiscard

Deserializes one class file prefix and reports the number of bytes consumed.

Parameters
bytesRange beginning with a class file; trailing data is permitted.
optionsStrictness and resource limits.
Returns
The owning model and its exact encoded length.
Exceptions
parse_errorif the class-file prefix is malformed, invalid in the selected mode, or exceeds a limit.

◆ deserialize_instructions()

code_body rpnx::cortado::deserialize_instructions ( std::span< std::byte const > bytes,
bytecode_read_options const & options = {} )
nodiscard

Decodes an entire JVM code array.

Parameters
bytesComplete Code attribute code array, without its length prefix.
optionsStrictness and input-size policy.
Returns
Exact instructions, or a complete raw_code in tooling mode when boundaries are unknowable.
Exceptions
parse_errorif the bytes are malformed or disallowed by the selected mode.

◆ deserialize_iter() [1/3]

template<std::forward_iterator InputIt, std::sentinel_for< InputIt > Sentinel>
auto rpnx::cortado::deserialize_iter ( class_file & value,
InputIt input,
Sentinel end,
class_file_read_options const & options = {} ) -> InputIt

Serial4-style bounded forward-iterator interface for JVM class-file bytes.

Template Parameters
InputItForward iterator whose value converts to std::byte.
SentinelEnd sentinel for InputIt.
Parameters
valueDestination replaced only after a complete prefix is decoded.
inputFirst input byte.
endOne-past-the-end input sentinel.
optionsStrictness and resource limits.
Returns
Iterator immediately after the decoded class-file prefix.

Definition at line 127 of file class_file.hpp.

◆ deserialize_iter() [2/3]

template<std::forward_iterator InputIt, std::sentinel_for< InputIt > Sentinel>
auto rpnx::cortado::deserialize_iter ( code_body & value,
InputIt input,
Sentinel end,
bytecode_read_options const & options = {} ) -> InputIt

Serial4-style bytecode forward-iterator interface.

Template Parameters
InputItForward iterator whose value converts to std::byte.
SentinelEnd sentinel for InputIt.
Parameters
valueDestination replaced after the complete range is decoded.
inputFirst code-array byte.
endOne-past-the-end input sentinel.
optionsStrictness and input-size policy.
Returns
end; code-array decoding consumes the complete range.

Definition at line 417 of file bytecode.hpp.

◆ deserialize_iter() [3/3]

template<std::forward_iterator InputIt, std::sentinel_for< InputIt > Sentinel>
auto rpnx::cortado::deserialize_iter ( jar_file & value,
InputIt input,
Sentinel end ) -> InputIt

Serial4-style bounded forward-iterator interface for JAR bytes.

Template Parameters
InputItForward iterator whose value converts to std::byte.
SentinelEnd sentinel for InputIt.
Parameters
valueDestination replaced after the complete archive is decoded.
inputFirst input byte.
endOne-past-the-end input sentinel.
Returns
end; JAR deserialization consumes the complete range.

Definition at line 86 of file jar.hpp.

References deserialize_jar().

◆ deserialize_jar()

jar_file rpnx::cortado::deserialize_jar ( std::span< std::byte const > bytes,
jar_read_options const & options = {} )
nodiscard

Deserializes exactly one JAR archive and validates entry sizes and CRC-32 values.

Parameters
bytesComplete single-disk JAR-compatible ZIP input.
optionsInflated-data resource limits.
Returns
An owning archive whose entry payloads are uncompressed.
Exceptions
parse_errorif the archive is malformed, unsupported, inconsistent, corrupt, or exceeds a limit.

Referenced by deserialize_iter().

◆ instruction_opcode()

opcode rpnx::cortado::instruction_opcode ( instruction const & value)
nodiscardnoexcept

Returns the opcode of a structured instruction.

Parameters
valueExact instruction alternative to inspect.
Returns
The compile-time opcode associated with that alternative.

◆ instruction_size()

std::size_t rpnx::cortado::instruction_size ( instruction const & value,
code_offset offset )
nodiscard

Returns the exact encoded size of an instruction at the supplied byte offset.

Parameters
valueExact instruction to measure.
offsetByte offset at which it will be encoded; this determines switch padding.
Returns
Encoded opcode, padding, and operand size in bytes.

◆ operator|() [1/3]

class_access_flags rpnx::cortado::operator| ( class_access_flags left,
class_access_flags right )
nodiscardconstexprnoexcept

Combines JVM class access flags without discarding their domain type.

Definition at line 61 of file types.hpp.

◆ operator|() [2/3]

field_access_flags rpnx::cortado::operator| ( field_access_flags left,
field_access_flags right )
nodiscardconstexprnoexcept

Combines JVM field access flags without discarding their domain type.

Definition at line 70 of file types.hpp.

◆ operator|() [3/3]

method_access_flags rpnx::cortado::operator| ( method_access_flags left,
method_access_flags right )
nodiscardconstexprnoexcept

Combines JVM method access flags without discarding their domain type.

Definition at line 79 of file types.hpp.

◆ parse_class_signature()

class_signature rpnx::cortado::parse_class_signature ( std::string_view text,
signature_parse_options const & options = {} )
nodiscard

Parses a complete class generic signature.

Parameters
textComplete Signature attribute bytes.
optionsResource limits applied during parsing.
Returns
The owning class-signature syntax tree.
Exceptions
parse_errorif the signature is malformed, has trailing bytes, or exceeds a limit.

◆ parse_field_descriptor()

field_type_descriptor rpnx::cortado::parse_field_descriptor ( std::string_view text)
nodiscard

Parses exactly one field descriptor.

Parameters
textComplete descriptor bytes, such as I or Ljava/lang/String;.
Returns
An owning descriptor syntax tree.
Exceptions
parse_errorif the text is malformed, contains trailing bytes, or exceeds 255 array dimensions.

◆ parse_field_signature()

reference_type_signature rpnx::cortado::parse_field_signature ( std::string_view text,
signature_parse_options const & options = {} )
nodiscard

Parses a complete field or record-component generic signature.

Parameters
textComplete Signature attribute bytes.
optionsResource limits applied during parsing.
Returns
The owning reference-type syntax tree.
Exceptions
parse_errorif the signature is malformed, has trailing bytes, or exceeds a limit.

◆ parse_method_descriptor()

method_descriptor rpnx::cortado::parse_method_descriptor ( std::string_view text)
nodiscard

Parses exactly one method descriptor and enforces the 255-slot parameter limit.

Parameters
textComplete method descriptor bytes, such as (II)I.
Returns
The ordered parameter and return descriptors.
Exceptions
parse_errorif the descriptor is malformed, has trailing bytes, or exceeds a JVM limit.

◆ parse_method_signature()

method_signature rpnx::cortado::parse_method_signature ( std::string_view text,
signature_parse_options const & options = {} )
nodiscard

Parses a complete method generic signature.

Parameters
textComplete Signature attribute bytes.
optionsResource limits applied during parsing.
Returns
The owning method-signature syntax tree.
Exceptions
parse_errorif the signature is malformed, has trailing bytes, or exceeds a limit.

◆ serialize_class_file()

std::vector< std::byte > rpnx::cortado::serialize_class_file ( class_file const & value,
class_file_write_options const & options = {} )
nodiscard

Serializes a class file using the big-endian JVM class-file format.

Parameters
valueComplete structured model to encode.
optionsStrictness policy used during encoding.
Returns
Exact emitted class-file bytes.
Exceptions
validation_errorif the model violates format rules or configured strictness.

◆ serialize_class_signature()

std::string rpnx::cortado::serialize_class_signature ( class_signature const & signature)
nodiscard

Serializes a class generic signature.

Parameters
signatureStructured signature to encode.
Returns
Canonical Signature attribute bytes.
Exceptions
validation_errorif an identifier or class segment is invalid.

◆ serialize_field_descriptor()

std::string rpnx::cortado::serialize_field_descriptor ( field_type_descriptor const & descriptor)
nodiscard

Encodes one field descriptor.

Parameters
descriptorStructured field type to encode.
Returns
The canonical JVM descriptor bytes.
Exceptions
validation_errorif the structured descriptor contains an invalid internal name.

◆ serialize_field_signature()

std::string rpnx::cortado::serialize_field_signature ( reference_type_signature const & signature)
nodiscard

Serializes a field or record-component generic signature.

Parameters
signatureStructured signature to encode.
Returns
Canonical Signature attribute bytes.
Exceptions
validation_errorif an identifier or class segment is invalid.

◆ serialize_instructions()

std::vector< std::byte > rpnx::cortado::serialize_instructions ( code_body const & value,
bytecode_write_options const & options = {} )
nodiscard

Encodes an entire JVM code array.

Parameters
valueExact instruction sequence or tooling-mode raw body.
optionsStrictness policy.
Returns
Complete code-array bytes without a length prefix.
Exceptions
validation_errorif the model is inconsistent, too large, or disallowed by the selected mode.

◆ serialize_iter() [1/6]

template<typename OutputIt>
auto rpnx::cortado::serialize_iter ( class_file const & value,
OutputIt output,
class_file_write_options const & options = {} ) -> OutputIt

Serial4-style output-iterator interface for JVM class-file bytes.

Template Parameters
OutputItWritable output iterator accepting std::byte.
Parameters
valueModel to serialize.
outputFirst output position.
optionsStrictness policy used during encoding.
Returns
Iterator immediately after the emitted bytes.

Definition at line 81 of file class_file.hpp.

◆ serialize_iter() [2/6]

template<typename OutputIt>
auto rpnx::cortado::serialize_iter ( class_file const & value,
OutputIt output,
OutputIt end,
class_file_write_options const & options = {} ) -> OutputIt

Serial4-style bounded output-iterator interface for JVM class-file bytes.

Template Parameters
OutputItWritable forward iterator accepting std::byte.
Parameters
valueModel to serialize.
outputFirst output position.
endOne-past-the-end output sentinel.
optionsStrictness policy used during encoding.
Returns
Iterator immediately after the emitted bytes.
Exceptions
std::length_errorif the output range cannot hold the encoded class.

Definition at line 102 of file class_file.hpp.

◆ serialize_iter() [3/6]

template<typename OutputIt>
auto rpnx::cortado::serialize_iter ( code_body const & value,
OutputIt output,
bytecode_write_options const & options = {} ) -> OutputIt

Serial4-style bytecode output-iterator interface.

Template Parameters
OutputItWritable output iterator accepting std::byte.
Parameters
valueCode body to serialize.
outputFirst output position.
optionsStrictness policy.
Returns
Iterator immediately after the encoded code array.

Definition at line 371 of file bytecode.hpp.

◆ serialize_iter() [4/6]

template<typename OutputIt>
auto rpnx::cortado::serialize_iter ( code_body const & value,
OutputIt output,
OutputIt end,
bytecode_write_options const & options = {} ) -> OutputIt

Serial4-style bounded bytecode output-iterator interface.

Template Parameters
OutputItWritable forward iterator accepting std::byte.
Parameters
valueCode body to serialize.
outputFirst output position.
endOne-past-the-end output position.
optionsStrictness policy.
Returns
Iterator immediately after the encoded code array.
Exceptions
std::length_errorif the output range is too small.

Definition at line 392 of file bytecode.hpp.

◆ serialize_iter() [5/6]

template<typename OutputIt>
auto rpnx::cortado::serialize_iter ( jar_file const & value,
OutputIt output ) -> OutputIt

Serial4-style output-iterator interface for JAR bytes.

Template Parameters
OutputItWritable output iterator accepting std::byte.
Parameters
valueArchive to serialize.
outputFirst output position.
Returns
Iterator immediately after the emitted archive.

Definition at line 42 of file jar.hpp.

References serialize_jar().

◆ serialize_iter() [6/6]

template<typename OutputIt>
auto rpnx::cortado::serialize_iter ( jar_file const & value,
OutputIt output,
OutputIt end ) -> OutputIt

Serial4-style bounded output-iterator interface for JAR bytes.

Template Parameters
OutputItWritable forward iterator accepting std::byte.
Parameters
valueArchive to serialize.
outputFirst output position.
endOne-past-the-end output position.
Returns
Iterator immediately after the emitted archive.
Exceptions
std::length_errorif the output range is too small.

Definition at line 62 of file jar.hpp.

References serialize_jar().

◆ serialize_jar()

std::vector< std::byte > rpnx::cortado::serialize_jar ( jar_file const & value)
nodiscard

Serializes an archive as a non-Zip64 JAR-compatible ZIP file.

Parameters
valueOwning archive model; each entry contains uncompressed data.
Returns
Complete single-disk ZIP bytes.
Exceptions
std::length_errorif an entry, archive, or field requires Zip64.
std::invalid_argumentif an entry requests unsupported flags or compression.

Referenced by serialize_iter(), and serialize_iter().

◆ serialize_method_descriptor()

std::string rpnx::cortado::serialize_method_descriptor ( method_descriptor const & descriptor)
nodiscard

Encodes one method descriptor.

Parameters
descriptorStructured parameter and return types to encode.
Returns
The canonical JVM method descriptor bytes.
Exceptions
validation_errorif a component is invalid or the parameters exceed 255 slots.

◆ serialize_method_signature()

std::string rpnx::cortado::serialize_method_signature ( method_signature const & signature)
nodiscard

Serializes a method generic signature.

Parameters
signatureStructured signature to encode.
Returns
Canonical Signature attribute bytes.
Exceptions
validation_errorif an identifier or class segment is invalid.

◆ validate_class_file()

validation_report rpnx::cortado::validate_class_file ( class_file const & value,
validation_options const & options = {} )
nodiscard

Validates a complete class-file model without throwing for model errors.

Parameters
valueOwning model to inspect; it is never modified.
optionsDiagnostic and traversal limits.
Returns
All retained failures in deterministic traversal order.

Format errors are reported in the returned value. Allocation and other exceptional runtime failures may still propagate.

References validate_class_file().

Referenced by validate_class_file().

◆ visit_instruction_type()

template<typename Visitor>
bool rpnx::cortado::visit_instruction_type ( opcode operation,
Visitor && visitor )
nodiscard

Invokes a visitor with the instruction type associated with a runtime opcode.

Template Parameters
VisitorCallable accepting std::type_identity<Instruction> for any instruction alternative.
Parameters
operationRuntime opcode to resolve.
visitorCallable invoked synchronously; no reference to it is retained.
Returns
true if operation has an instruction alternative, otherwise false.

Definition at line 280 of file bytecode.hpp.

Variable Documentation

◆ class_file_magic

std::uint32_t rpnx::cortado::class_file_magic = 0xCAFEBABEU
inlineconstexpr

The fixed magic value at the start of every JVM class file.

Definition at line 27 of file types.hpp.