forma-ir 3.0.0

Forma Module IR: binary format, parser, and server-side HTML walker
Documentation
// Generated by scripts/generate-fmir-constants.mjs from fmir-constants.json. Do not edit.
/// FMIR v3 signature.
pub const SIGNATURE: [u8; 8] = [137, 70, 77, 73, 13, 10, 26, 10];
/// Shared layout: HEADER_SIZE.
pub const HEADER_SIZE: usize = 24;
/// Shared layout: TABLE_PREFIX_SIZE.
pub const TABLE_PREFIX_SIZE: usize = 4;
/// Shared layout: SECTION_ENTRY_SIZE.
pub const SECTION_ENTRY_SIZE: usize = 12;
/// Shared layout: IR_VERSION.
pub const IR_VERSION: u16 = 3;
/// Shared limits: MAX_MODULE_SIZE.
pub const MAX_MODULE_SIZE: usize = 16777216;
/// Shared limits: MAX_SECTIONS.
pub const MAX_SECTIONS: usize = 64;
/// Shared limits: MAX_STRINGS.
pub const MAX_STRINGS: usize = 1048576;
/// Shared limits: MAX_SLOTS.
pub const MAX_SLOTS: usize = 65535;
/// Shared limits: MAX_ISLANDS.
pub const MAX_ISLANDS: usize = 4096;
/// Shared limits: MAX_SCHEMA_ITEMS.
pub const MAX_SCHEMA_ITEMS: usize = 1024;
/// Shared limits: MAX_TYPE_DEPTH.
pub const MAX_TYPE_DEPTH: usize = 16;
/// Shared limits: MAX_KEY_SEGMENTS.
pub const MAX_KEY_SEGMENTS: usize = 32;
/// Shared limits: MAX_CONTROL_DEPTH.
pub const MAX_CONTROL_DEPTH: usize = 64;
/// Shared limits: MAX_LIST_DEPTH.
pub const MAX_LIST_DEPTH: usize = 4;
/// Shared limits: MAX_CONTRACT_BYTES.
pub const MAX_CONTRACT_BYTES: usize = 1048576;
/// Shared limits: MAX_BINDING_RECORDS.
pub const MAX_BINDING_RECORDS: usize = 65535;
/// Shared limits: MAX_VALUE_DEPTH.
pub const MAX_VALUE_DEPTH: usize = 64;
/// Shared limits: MAX_PROP_PATH_SEGMENTS.
pub const MAX_PROP_PATH_SEGMENTS: usize = 1024;
/// Shared limits: MAX_CONSTANT_NODES.
pub const MAX_CONSTANT_NODES: usize = 65535;
/// Shared limits: MAX_CONSTANT_DEPTH.
pub const MAX_CONSTANT_DEPTH: usize = 1024;
/// Shared limits: MAX_CONSTANT_ARRAY_ELEMENTS.
pub const MAX_CONSTANT_ARRAY_ELEMENTS: usize = 65535;
/// Shared limits: MAX_ISLAND_STATE_BYTES.
pub const MAX_ISLAND_STATE_BYTES: usize = 1048576;
/// Shared crc: CRC_POLYNOMIAL.
pub const CRC_POLYNOMIAL: u32 = 3988292384;
/// Shared crc: CRC_CHECK_VALUE.
pub const CRC_CHECK_VALUE: u32 = 3421780262;
/// Shared sections: SECTION_BYTECODE.
pub const SECTION_BYTECODE: u16 = 1;
/// Shared sections: SECTION_STRINGS.
pub const SECTION_STRINGS: u16 = 2;
/// Shared sections: SECTION_SLOTS.
pub const SECTION_SLOTS: u16 = 3;
/// Shared sections: SECTION_ISLANDS.
pub const SECTION_ISLANDS: u16 = 4;
/// Shared sections: SECTION_PROPS_SCHEMA.
pub const SECTION_PROPS_SCHEMA: u16 = 5;
/// Shared sections: SECTION_KEY_PATHS.
pub const SECTION_KEY_PATHS: u16 = 6;
/// Shared sections: SECTION_SOURCE_POSITIONS.
pub const SECTION_SOURCE_POSITIONS: u16 = 7;
/// Shared sections: SECTION_BUILD_IDENTITY.
pub const SECTION_BUILD_IDENTITY: u16 = 8;
/// Shared sections: SECTION_DEPLOYMENT.
pub const SECTION_DEPLOYMENT: u16 = 9;
/// Shared sections: SECTION_ISLAND_CONTRACTS.
pub const SECTION_ISLAND_CONTRACTS: u16 = 10;
/// Shared flags: SECTION_REQUIRED.
pub const SECTION_REQUIRED: u16 = 1;
/// Shared slot types: SLOT_TYPE_TEXT.
pub const SLOT_TYPE_TEXT: u8 = 1;
/// Shared slot types: SLOT_TYPE_BOOL.
pub const SLOT_TYPE_BOOL: u8 = 2;
/// Shared slot types: SLOT_TYPE_NUMBER.
pub const SLOT_TYPE_NUMBER: u8 = 3;
/// Shared slot types: SLOT_TYPE_ARRAY.
pub const SLOT_TYPE_ARRAY: u8 = 4;
/// Shared slot types: SLOT_TYPE_OBJECT.
pub const SLOT_TYPE_OBJECT: u8 = 5;
/// Shared slot sources: SLOT_SOURCE_SERVER.
pub const SLOT_SOURCE_SERVER: u8 = 0;
/// Shared slot sources: SLOT_SOURCE_CLIENT.
pub const SLOT_SOURCE_CLIENT: u8 = 1;
/// Shared island triggers: TRIGGER_LOAD.
pub const TRIGGER_LOAD: u8 = 1;
/// Shared island triggers: TRIGGER_VISIBLE.
pub const TRIGGER_VISIBLE: u8 = 2;
/// Shared island triggers: TRIGGER_INTERACTION.
pub const TRIGGER_INTERACTION: u8 = 3;
/// Shared island triggers: TRIGGER_IDLE.
pub const TRIGGER_IDLE: u8 = 4;
/// Shared schema types: SCHEMA_BOOLEAN.
pub const SCHEMA_BOOLEAN: u8 = 1;
/// Shared schema types: SCHEMA_STRING.
pub const SCHEMA_STRING: u8 = 2;
/// Shared schema types: SCHEMA_NUMBER.
pub const SCHEMA_NUMBER: u8 = 3;
/// Shared schema types: SCHEMA_DATE.
pub const SCHEMA_DATE: u8 = 4;
/// Shared schema types: SCHEMA_ENUM.
pub const SCHEMA_ENUM: u8 = 5;
/// Shared schema types: SCHEMA_ARRAY.
pub const SCHEMA_ARRAY: u8 = 6;
/// Shared schema types: SCHEMA_OPTIONAL.
pub const SCHEMA_OPTIONAL: u8 = 7;
/// Shared schema types: SCHEMA_OBJECT.
pub const SCHEMA_OBJECT: u8 = 8;
/// Shared load codes: LOAD_101.
pub const LOAD_101: &str = "LOAD-101";
/// Shared load codes: LOAD_102.
pub const LOAD_102: &str = "LOAD-102";
/// Shared load codes: LOAD_103.
pub const LOAD_103: &str = "LOAD-103";
/// Shared load codes: LOAD_104.
pub const LOAD_104: &str = "LOAD-104";
/// Shared load codes: LOAD_105.
pub const LOAD_105: &str = "LOAD-105";
/// Shared load codes: LOAD_106.
pub const LOAD_106: &str = "LOAD-106";
/// Shared load codes: LOAD_107.
pub const LOAD_107: &str = "LOAD-107";
/// Shared load codes: LOAD_108.
pub const LOAD_108: &str = "LOAD-108";
/// str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[].
pub const OP_OPEN_TAG: u8 = 1;
/// str_idx:u32.
pub const OP_CLOSE_TAG: u8 = 2;
/// str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[].
pub const OP_VOID_TAG: u8 = 3;
/// str_idx:u32.
pub const OP_TEXT: u8 = 4;
/// slot_id:u16 marker_id:u16.
pub const OP_DYN_TEXT: u8 = 5;
/// attr_str_idx:u32 slot_id:u16.
pub const OP_DYN_ATTR: u8 = 6;
/// slot_id:u16 then_len:u32 else_len:u32 then:bytes SHOW_ELSE else:bytes.
pub const OP_SHOW_IF: u8 = 7;
/// No operands.
pub const OP_SHOW_ELSE: u8 = 8;
/// slot_id:u16 item_slot_id:u16 body_len:u32 body:bytes.
pub const OP_LIST: u8 = 10;
/// island_id:u16.
pub const OP_ISLAND_START: u8 = 11;
/// island_id:u16.
pub const OP_ISLAND_END: u8 = 12;
/// src_slot_id:u16 prop_str_idx:u32 target_slot_id:u16.
pub const OP_PROP: u8 = 18;
/// source_slot:u16 fallback_slot:u16 destination_slot:u16.
pub const OP_COALESCE: u8 = 19;
/// Operand shapes for the assigned opcodes.
pub const OPCODE_OPERANDS: &[(u8, &str)] = &[
    (1, "str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[]"),
    (2, "str_idx:u32"),
    (3, "str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[]"),
    (4, "str_idx:u32"),
    (5, "slot_id:u16 marker_id:u16"),
    (6, "attr_str_idx:u32 slot_id:u16"),
    (7, "slot_id:u16 then_len:u32 else_len:u32 then:bytes SHOW_ELSE else:bytes"),
    (8, ""),
    (10, "slot_id:u16 item_slot_id:u16 body_len:u32 body:bytes"),
    (11, "island_id:u16"),
    (12, "island_id:u16"),
    (18, "src_slot_id:u16 prop_str_idx:u32 target_slot_id:u16"),
    (19, "source_slot:u16 fallback_slot:u16 destination_slot:u16"),
];
/// Reserved opcode bytes, never reassigned.
pub const RESERVED_OPCODES: [u8; 6] = [9, 13, 14, 15, 16, 17];