RPNXCortado
C++23 JVM class-file, bytecode, validation, and JAR toolkit
Loading...
Searching...
No Matches
types.hpp File Reference

Fundamental class-file, constant-pool, and JAR value types. More...

#include <cstddef>
#include <cstdint>
#include <rpnx/macros.hpp>
#include <string>
#include <variant>
#include <vector>

Go to the source code of this file.

Classes

struct  rpnx::cortado::constant_pool_index
 A type-safe index into a JVM constant pool. More...
 
struct  rpnx::cortado::bootstrap_method_index
 A type-safe index into the BootstrapMethods attribute. More...
 
struct  rpnx::cortado::class_file_version
 A JVM class-file version pair. More...
 
struct  rpnx::cortado::utf8_constant
 A CONSTANT_Utf8 entry. More...
 
struct  rpnx::cortado::integer_constant
 A CONSTANT_Integer entry represented by its exact IEEE/JVM bits. More...
 
struct  rpnx::cortado::float_constant
 A CONSTANT_Float entry represented by its exact IEEE 754 bits. More...
 
struct  rpnx::cortado::long_constant
 A CONSTANT_Long entry represented by its exact two's-complement bits. More...
 
struct  rpnx::cortado::double_constant
 A CONSTANT_Double entry represented by its exact IEEE 754 bits. More...
 
struct  rpnx::cortado::class_constant
 A CONSTANT_Class entry. More...
 
struct  rpnx::cortado::string_constant
 A CONSTANT_String entry. More...
 
struct  rpnx::cortado::fieldref_constant
 A CONSTANT_Fieldref entry. More...
 
struct  rpnx::cortado::methodref_constant
 A CONSTANT_Methodref entry. More...
 
struct  rpnx::cortado::interface_methodref_constant
 A CONSTANT_InterfaceMethodref entry. More...
 
struct  rpnx::cortado::name_and_type_constant
 A CONSTANT_NameAndType entry. More...
 
struct  rpnx::cortado::method_handle_constant
 A CONSTANT_MethodHandle entry. More...
 
struct  rpnx::cortado::method_type_constant
 A CONSTANT_MethodType entry. More...
 
struct  rpnx::cortado::dynamic_constant
 A CONSTANT_Dynamic entry. More...
 
struct  rpnx::cortado::invoke_dynamic_constant
 A CONSTANT_InvokeDynamic entry. More...
 
struct  rpnx::cortado::module_constant
 A CONSTANT_Module entry. More...
 
struct  rpnx::cortado::package_constant
 A CONSTANT_Package entry. More...
 
struct  rpnx::cortado::zip_dos_time
 A packed MS-DOS time value from a ZIP entry header. More...
 
struct  rpnx::cortado::zip_dos_date
 A packed MS-DOS date value from a ZIP entry header. More...
 
struct  rpnx::cortado::zip_internal_attributes
 Host-defined internal attributes from a ZIP central-directory entry. More...
 
struct  rpnx::cortado::zip_external_attributes
 Host-defined external attributes from a ZIP central-directory entry. More...
 
struct  rpnx::cortado::jar_entry
 One owning JAR/ZIP entry, with its data stored uncompressed in memory. More...
 
struct  rpnx::cortado::jar_file
 An owning JAR archive representation. More...
 
struct  rpnx::cortado::jar_read_options
 Explicit resource limits applied while reading an untrusted JAR archive. More...
 

Namespaces

namespace  rpnx::cortado
 JVM class-file, bytecode, validation, generation, and JAR APIs.
 

Typedefs

using rpnx::cortado::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  rpnx::cortado::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  rpnx::cortado::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  rpnx::cortado::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  rpnx::cortado::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  rpnx::cortado::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  rpnx::cortado::compression_method : std::uint16_t { stored = 0 , deflated = 8 }
 Compression methods supported by JAR serialization. More...
 
enum class  rpnx::cortado::jar_entry_flags : std::uint16_t { none = 0 , utf8_names = 0x0800 }
 JAR entry flags preserved by this library. More...
 

Functions

constexpr class_access_flags rpnx::cortado::operator| (class_access_flags left, class_access_flags right) noexcept
 Combines JVM class access flags without discarding their domain type.
 
constexpr field_access_flags rpnx::cortado::operator| (field_access_flags left, field_access_flags right) noexcept
 Combines JVM field access flags without discarding their domain type.
 
constexpr method_access_flags rpnx::cortado::operator| (method_access_flags left, method_access_flags right) noexcept
 Combines JVM method access flags without discarding their domain type.
 

Variables

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

Detailed Description

Fundamental class-file, constant-pool, and JAR value types.

The aggregates in this header own their data and intentionally expose the JVM and ZIP wire concepts without hiding format-defined sentinel values.

Definition in file types.hpp.