1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//! Read-only parser for the RemObjects PascalScript III binary
//! container format (`IFPS` magic).
//!
//! RemObjects PascalScript is a Pascal-syntax scripting library
//! widely embedded in Delphi applications (Inno Setup's `[Code]`
//! sections being one of the most prominent users). This crate
//! parses the on-disk binary form — header, type / proc / var
//! / attribute tables, and the bytecode stream — into typed
//! Rust views, plus surfaces a symbolic disassembly via
//! [`Container::display`].
//!
//! Wire-format reference: the upstream `Components/UniPs/Source/`
//! tree (Carlo Kok's RemObjects PS III, `stable` branch). Every
//! parser file cites the specific upstream `uPSRuntime.pas` /
//! `uPSUtils.pas` line range it mirrors so reviewers can diff.
//!
//! Supported binary range: `PSLowBuildSupport = 12` through
//! `PSCurrentBuildNo = 23` (`uPSUtils.pas:14, 16`).
//!
//! # Wire-format anchors
//!
//! - Magic `PSValidHeader = 0x53504649` (LE bytes `b"IFPS"`),
//! `uPSUtils.pas:20`.
//! - Header layout `TPSHeader` packed record,
//! `uPSRuntime.pas:1204-1212`.
//! - `BaseType` constants `btU8 = 1` … `btType = 130`,
//! `uPSUtils.pas:46-118`.
//! - Container deserializer `TPSExec.LoadData`,
//! `uPSRuntime.pas:2318-3033`.
//! - Opcode constants `CM_A = 0` … `Cm_P2G = 26`, `cm_nop = 255`,
//! `uPSUtils.pas:122-297`.
//! - Operand wire form `TPSExec.ReadVariable`,
//! `uPSRuntime.pas:6700+`.
//!
//! # Adversarial-input safety
//!
//! `clippy::unwrap_used`, `expect_used`, `panic`,
//! `arithmetic_side_effects`, `indexing_slicing` are denied at
//! crate level, plus a no-`unsafe` posture. Every read goes
//! through an internal `Reader` cursor that surfaces truncation
//! as an [`Error`].
pub use ;
pub use ;
pub use Container;
pub use ;
pub use Error;
pub use ;
pub use Literal;
pub use ;
pub use ;
pub use proc::;
pub use ;
pub use Var;