Word Unperfect
public
Read
Owner: themaster
Branch: main
Commits: 0
Git CLI clone URL
git clone https://www.xt-emporium.com/git/word-unperfect.git
Fullscreen desktop URL
Code
Commits
History
Branches
Bug Reports
Discussions
Compare
Settings
word-unperfect
/
rev
/
wp_variable_codes.h
File editor
#ifndef WP_VARIABLE_CODES_H #define WP_VARIABLE_CODES_H #include "wp_record_parser.h" #include "wp_format_table.h" #include <stdbool.h> #include <stddef.h> #include <stdint.h> #define WP_LAYOUT_STATE_EXTENSION_PREVIEW_BYTES 64U #define WP_D4_LINE_WINDOW_EXTENSION_PREVIEW_BYTES 32U #define WP_D4_EXTENSION_PREVIEW_BYTES 64U #define WP_VARIABLE_TEXT_PREVIEW_BYTES 48U #define WP_REPEAT_GROUP_PREVIEW_WORDS 6U #define WP_D4_COMPACT_METRIC_WORDS 6U #define WP_D4_LAYOUT_ANCHOR_WORDS 15U #define WP_VARIABLE_POST_REPEAT_DISPATCH 0x0100U #define WP_VARIABLE_POST_EXTENSION_SCAN 0x0200U #define WP_VARIABLE_POST_REFCOUNT_ADJUST 0x0400U #define WP_VARIABLE_POST_REFCOUNT_INCREMENT 0x0800U typedef enum WpD4LayoutCommandKind { WP_D4_COMMAND_UNKNOWN = 0, WP_D4_COMMAND_PENDING_SPAN, WP_D4_COMMAND_LINE_WINDOW, WP_D4_COMMAND_LINE_METRIC, WP_D4_COMMAND_EXTENSION_FRAGMENT, WP_D4_COMMAND_LINE_BUILD_CHECKPOINT, WP_D4_COMMAND_WORD_PAIR_CHECKPOINT, WP_D4_COMMAND_POSITION_MARKER, WP_D4_COMMAND_CONTROL_WORD, WP_D4_COMMAND_COMPACT_METRIC, WP_D4_COMMAND_LAYOUT_ANCHOR, WP_D4_COMMAND_LAYOUT_STATE } WpD4LayoutCommandKind; typedef enum WpVariableAction { WP_VARIABLE_ACTION_GENERIC = 0, WP_VARIABLE_ACTION_INITIAL_FORMAT_TABLE, WP_VARIABLE_ACTION_DEFINITION, WP_VARIABLE_ACTION_OUTLINE_LIST, WP_VARIABLE_ACTION_GENERATED_TEXT, WP_VARIABLE_ACTION_LAYOUT_STATE, WP_VARIABLE_ACTION_REPEAT_GROUP, WP_VARIABLE_ACTION_DELAYED_TEXT_GROUP, WP_VARIABLE_ACTION_BOX_OR_OBJECT, WP_VARIABLE_ACTION_TABLE_LAYOUT, WP_VARIABLE_ACTION_SCANNER_BYPASS, WP_VARIABLE_ACTION_SYSTEM_COMMAND, WP_VARIABLE_ACTION_COUNT } WpVariableAction; typedef struct WpD4PendingSpanPayload { bool is_pending_span; uint16_t record_type; uint16_t span_a; uint16_t span_b; uint16_t carry_width; } WpD4PendingSpanPayload; typedef struct WpD4LineWindowPayload { bool is_line_window; uint16_t record_type; uint16_t old_scratch_start; uint16_t old_line_start; uint16_t old_scratch_extent; uint16_t old_line_extent; uint16_t carry_width_before; uint16_t new_scratch_start; uint16_t new_line_start; uint16_t new_scratch_extent; uint16_t new_line_extent; int16_t carry_delta; uint16_t carry_width_after; bool has_extension_payload; uint8_t extension_marker; uint8_t extension_size_hint; uint16_t extension_payload_bytes; uint16_t trailing_unparsed_bytes; uint16_t extension_preview_length; bool extension_preview_truncated; uint8_t extension_preview[WP_D4_LINE_WINDOW_EXTENSION_PREVIEW_BYTES]; } WpD4LineWindowPayload; typedef struct WpD4ExtensionPayload { bool is_extension_payload; uint8_t marker; uint8_t size_hint; uint8_t chunk_count; uint16_t decoded_payload_bytes; uint16_t extension_payload_bytes; uint16_t trailing_unparsed_bytes; bool has_inline_payload; uint16_t inline_payload_bytes; bool is_block_list; bool has_block_list; uint16_t length_word; uint8_t block_count; uint16_t block_bytes; uint16_t preview_length; bool preview_truncated; uint8_t preview[WP_D4_EXTENSION_PREVIEW_BYTES]; } WpD4ExtensionPayload; typedef struct WpD4LineMetricPayload { bool is_line_metric; uint16_t record_type; uint16_t position_word; uint16_t sequence_word; uint16_t aux_word_a; uint16_t aux_word_b; uint16_t flags_word; uint16_t gate_word; uint16_t extent_word_a; uint16_t extent_word_b; uint16_t line_start_word; bool has_extension_payload; WpD4ExtensionPayload extension; } WpD4LineMetricPayload; typedef struct WpD4LineBuildCheckpointPayload { bool is_line_build_checkpoint; uint16_t line_build_word_51f1; uint16_t line_build_word_51f3; } WpD4LineBuildCheckpointPayload; typedef struct WpD4WordPairCheckpointPayload { bool is_word_pair_checkpoint; uint16_t word_a; uint16_t word_b; } WpD4WordPairCheckpointPayload; typedef struct WpD4PositionMarkerPayload { bool is_position_marker; uint16_t record_type; uint16_t position_word; uint16_t sequence_word; uint16_t aux_word_a; uint16_t aux_word_b; uint16_t aux_word_c; uint8_t tail_byte; } WpD4PositionMarkerPayload; typedef struct WpD4ControlWordPayload { bool is_control_word; uint16_t control_word; } WpD4ControlWordPayload; typedef struct WpD4CompactMetricPayload { bool is_compact_metric; uint16_t record_type; uint16_t word_a; uint16_t word_b; uint16_t word_c; uint16_t word_d; uint16_t word_e; uint16_t raw_words[WP_D4_COMPACT_METRIC_WORDS]; } WpD4CompactMetricPayload; typedef struct WpD4LayoutAnchorPayload { bool is_layout_anchor; uint16_t record_type; uint16_t anchor_word; uint16_t sequence_word; uint16_t flags_word_a; uint16_t flags_word_b; uint16_t group_word; uint16_t aux_word; uint16_t span_word_a; uint16_t span_word_b; uint16_t span_word_c; uint16_t margin_word_a; uint16_t margin_word_b; uint16_t metric_word; uint16_t line_advance_word; uint16_t tail_word; uint16_t raw_words[WP_D4_LAYOUT_ANCHOR_WORDS]; } WpD4LayoutAnchorPayload; typedef struct WpVariableTextPreview { uint16_t bytes_seen; uint16_t printable_bytes; uint16_t nul_bytes; uint16_t preview_length; bool preview_truncated; char preview[WP_VARIABLE_TEXT_PREVIEW_BYTES + 1U]; } WpVariableTextPreview; typedef struct WpD1DefinitionPayload { bool is_definition; uint8_t definition_id; uint16_t word_a; uint16_t word_b; uint16_t word_c; uint16_t word_d; uint8_t flags_a; uint8_t flags_b; WpVariableTextPreview text; } WpD1DefinitionPayload; typedef struct WpD2OutlinePayload { bool is_outline; uint8_t family; uint8_t level_count; uint16_t word_a; uint16_t word_b; uint16_t word_c; uint16_t word_d; WpVariableTextPreview text; } WpD2OutlinePayload; typedef struct WpD3GeneratedTextPayload { bool is_generated_text; uint8_t selector; uint16_t word_a; uint16_t word_b; WpVariableTextPreview text; } WpD3GeneratedTextPayload; typedef struct WpDelayedTextPayload { bool is_delayed_text; uint8_t code; uint8_t sub_code; uint16_t prefix_word; uint8_t selector; bool has_nested_stream_offset; uint16_t nested_stream_offset; WpVariableTextPreview text; } WpDelayedTextPayload; typedef struct WpRepeatGroupPayload { bool is_repeat_group; uint8_t code; uint8_t sub_code; uint16_t payload_bytes; uint8_t preview_word_count; uint16_t preview_words[WP_REPEAT_GROUP_PREVIEW_WORDS]; bool has_odd_trailing_byte; uint8_t odd_trailing_byte; } WpRepeatGroupPayload; typedef struct WpBoxObjectPayload { bool is_box_object; uint8_t object_id; uint8_t flags_a; uint8_t flags_b; uint16_t word_a; uint16_t word_b; uint16_t word_c; uint16_t word_d; WpVariableTextPreview text; } WpBoxObjectPayload; typedef struct WpTableLayoutPayload { bool is_table_layout; uint8_t row; uint8_t column; uint8_t cell_flags; uint8_t layout_flags; uint16_t word_a; uint16_t word_b; uint16_t word_c; WpVariableTextPreview text; } WpTableLayoutPayload; typedef struct WpSystemCommandPayload { bool is_system_command; uint8_t sub_code; uint16_t payload_bytes; bool has_word_a; uint16_t word_a; } WpSystemCommandPayload; typedef struct WpLayoutStatePayload { bool is_layout_state; uint16_t record_type; uint16_t carry_width; uint16_t wrap_value; uint16_t pending_offset; uint8_t pending_level; uint8_t extra_byte; uint8_t state_flags; uint8_t mode_flags; uint8_t mode_flags_2; uint8_t restore_flags; uint16_t pending_total; uint16_t primary_limit; uint16_t secondary_limit; uint16_t primary_origin; uint16_t secondary_origin; /* The decompiled append/restore path may append optional chunks after the * fixed 24-byte 0x1600 state payload. Chunk 1 carries variant/snapshot * state; chunk 2 carries 16-byte record-extension blocks. */ bool has_extension_marker; uint8_t extension_marker; uint8_t extension_size_hint; uint16_t decoded_payload_bytes; uint16_t trailing_unparsed_bytes; bool has_variant_snapshot; uint8_t variant_chunk_size; uint8_t variant_prefix_bytes; uint16_t variant_limit; uint16_t saved_wrap_value; uint16_t variant_anchor; uint16_t variant_live_limit; LayoutStateSnapshot saved_snapshot; bool has_extension_blocks; uint8_t extension_block_count; uint16_t extension_block_bytes; uint16_t extension_preview_length; bool extension_preview_truncated; uint8_t extension_preview[WP_LAYOUT_STATE_EXTENSION_PREVIEW_BYTES]; } WpLayoutStatePayload; typedef struct WpVariablePostComparePlan { uint16_t flags; bool has_repeat_count; uint16_t repeat_count; uint16_t repeat_count_offset; bool repeat_count_offset_valid; bool extension_scan; bool refcount_adjust; bool refcount_increment; bool refcount_decrement; } WpVariablePostComparePlan; typedef struct WpVariableCommandInfo { WpVariableAction action; bool scanner_bypass; bool has_initial_format_table; WpFormatTableInfo initial_table; bool has_layout_state; bool has_pending_span; bool has_line_window; bool has_line_metric; bool has_extension_fragment; bool has_line_build_checkpoint; bool has_word_pair_checkpoint; bool has_position_marker; bool has_control_word; bool has_compact_metric; bool has_layout_anchor; bool has_definition_payload; bool has_outline_payload; bool has_generated_text_payload; bool has_delayed_text_payload; bool has_repeat_group_payload; bool has_box_object_payload; bool has_table_layout_payload; bool has_system_command_payload; bool has_nested_stream_hint; uint16_t nested_stream_offset; WpLayoutStatePayload layout_state; WpD4PendingSpanPayload pending_span; WpD4LineWindowPayload line_window; WpD4LineMetricPayload line_metric; WpD4ExtensionPayload extension_fragment; WpD4LineBuildCheckpointPayload line_build_checkpoint; WpD4WordPairCheckpointPayload word_pair_checkpoint; WpD4PositionMarkerPayload position_marker; WpD4ControlWordPayload control_word; WpD4CompactMetricPayload compact_metric; WpD4LayoutAnchorPayload layout_anchor; WpD1DefinitionPayload definition_payload; WpD2OutlinePayload outline_payload; WpD3GeneratedTextPayload generated_text_payload; WpDelayedTextPayload delayed_text_payload; WpRepeatGroupPayload repeat_group_payload; WpBoxObjectPayload box_object_payload; WpTableLayoutPayload table_layout_payload; WpSystemCommandPayload system_command_payload; bool has_post_compare_plan; WpVariablePostComparePlan post_compare; } WpVariableCommandInfo; const char *wp_variable_action_name(WpVariableAction action); const char *wp_variable_code_name(uint8_t code, uint8_t sub_code); const char *wp_variable_d4_record_type_name(uint16_t record_type); WpVariableAction wp_variable_action(uint8_t code, uint8_t sub_code); bool wp_variable_decode_pending_span_payload(const uint8_t *payload, uint16_t payload_length, WpD4PendingSpanPayload *out_span); bool wp_variable_decode_pending_span_record(const WpRecord *rec, WpD4PendingSpanPayload *out_span); bool wp_variable_decode_line_window_payload(const uint8_t *payload, uint16_t payload_length, WpD4LineWindowPayload *out_window); bool wp_variable_decode_line_window_record(const WpRecord *rec, WpD4LineWindowPayload *out_window); bool wp_variable_decode_extension_payload(const uint8_t *payload, uint16_t payload_length, WpD4ExtensionPayload *out_extension); bool wp_variable_decode_extension_record(const WpRecord *rec, WpD4ExtensionPayload *out_extension); bool wp_variable_decode_line_metric_payload(const uint8_t *payload, uint16_t payload_length, WpD4LineMetricPayload *out_metric); bool wp_variable_decode_line_metric_record(const WpRecord *rec, WpD4LineMetricPayload *out_metric); bool wp_variable_decode_line_build_checkpoint_payload(const uint8_t *payload, uint16_t payload_length, WpD4LineBuildCheckpointPayload *out_checkpoint); bool wp_variable_decode_line_build_checkpoint_record(const WpRecord *rec, WpD4LineBuildCheckpointPayload *out_checkpoint); bool wp_variable_decode_word_pair_checkpoint_payload(const uint8_t *payload, uint16_t payload_length, WpD4WordPairCheckpointPayload *out_checkpoint); bool wp_variable_decode_word_pair_checkpoint_record(const WpRecord *rec, WpD4WordPairCheckpointPayload *out_checkpoint); bool wp_variable_decode_position_marker_payload(const uint8_t *payload, uint16_t payload_length, WpD4PositionMarkerPayload *out_marker); bool wp_variable_decode_position_marker_record(const WpRecord *rec, WpD4PositionMarkerPayload *out_marker); bool wp_variable_decode_control_word_payload(const uint8_t *payload, uint16_t payload_length, WpD4ControlWordPayload *out_control); bool wp_variable_decode_control_word_record(const WpRecord *rec, WpD4ControlWordPayload *out_control); bool wp_variable_decode_compact_metric_payload(const uint8_t *payload, uint16_t payload_length, WpD4CompactMetricPayload *out_metric); bool wp_variable_decode_compact_metric_record(const WpRecord *rec, WpD4CompactMetricPayload *out_metric); bool wp_variable_decode_layout_anchor_payload(const uint8_t *payload, uint16_t payload_length, WpD4LayoutAnchorPayload *out_anchor); bool wp_variable_decode_layout_anchor_record(const WpRecord *rec, WpD4LayoutAnchorPayload *out_anchor); bool wp_variable_decode_layout_state_payload(const uint8_t *payload, uint16_t payload_length, WpLayoutStatePayload *out_state); bool wp_variable_decode_layout_state_record(const WpRecord *rec, WpLayoutStatePayload *out_state); bool wp_variable_capture_layout_state(const WpLayoutGlobals *wl, WpLayoutStatePayload *out_state); bool wp_variable_apply_layout_state(WpLayoutGlobals *wl, const WpLayoutStatePayload *state); size_t wp_variable_layout_state_payload_size(const WpLayoutStatePayload *state); bool wp_variable_encode_layout_state_payload(const WpLayoutStatePayload *state, uint8_t *out, size_t out_capacity, size_t *out_len); bool wp_variable_encode_layout_state_record(const WpLayoutStatePayload *state, uint8_t sub_code, uint8_t *out, size_t out_capacity, size_t *out_len); bool wp_variable_decode_post_compare_plan(const WpRecord *rec, WpVariablePostComparePlan *out_plan); bool wp_variable_classify_record(const WpRecord *rec, WpVariableCommandInfo *out_info); bool wp_variable_describe_payload(const WpRecord *rec, char *out, size_t out_size); #endif
Commit message
This repository is read-only for this account.
Repository snapshot
Current branch
main
Visibility
public
Your access
Read
Remote
None
File activity
View file history