Module definition of Condition property decorators.
The Condition decorators are used to handle scenarios where parts
of a binary file format exist conditionally, based on values determined
at runtime.
These decorators enable the parser to dynamically select the
Primitive.Relation to read next, based on the provided conditions.
This functionality is essential for parsing formats that have conditional
properties or polymorphic structures.
Condition decorators are executed before reading a property
to determine the type of the next relation to read.
%%{init:{"theme":"dark"}}%%
flowchart TB
subgraph s1[For each properties]
direction TB
PreOperation[__Pre__ property reading operations] --> Condition
click PreOperation "/binspector/modules/PrePost.html" "Documentation for 'Pre' type decorators"
Condition[__Condition__ get the definitive subtype to read based on current state] --> s2
click Condition "/binspector/modules/Condition.html" "Documentation for 'Condtion' type decorators"
subgraph s2[Reading subtype]
Controller[__Controller__ decides when to stop reading the subtype based on a set of arbitrary conditions] --> TypeReading[Read __Relation__ or __Primitive__]
click Controller "/binspector/modules/Controller.html" "Documentation for 'Controller' type decorators"
click TypeReading "/binspector/modules/Primitive.html" "Documentation for 'Primitive' type decorators"
end
TypeReading --> Controller
s2 --> Transform[__Transform__ the value we read into something else]
click Transform "/binspector/modules/Transformer.html" "Documentation for 'Transformer' type decorators"
Transform --> Validate[__Validate__ the final value]
click Validate "/binspector/modules/Validator.html" "Documentation for 'Validator' type decorators"
Validate --> PostOperation[__Post__ property reading operations]
click PostOperation "/binspector/modules/PrePost.html" "Documentation for 'Post' type decorators"
end
PostOperation --> A@{ shape: framed-circle, label: "Stop" }
style Condition fill:blue,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
%%{init:{"theme":"default"}}%%
flowchart TB
subgraph s1[For each properties]
direction TB
PreOperation[__Pre__ property reading operations] --> Condition
click PreOperation "/binspector/modules/PrePost.html" "Documentation for 'Pre' type decorators"
Condition[__Condition__ get the definitive subtype to read based on current state] --> s2
click Condition "/binspector/modules/Condition.html" "Documentation for 'Condtion' type decorators"
subgraph s2[Reading subtype]
Controller[__Controller__ decides when to stop reading the subtype based on a set of arbitrary conditions] --> TypeReading[Read __Relation__ or __Primitive__]
click Controller "/binspector/modules/Controller.html" "Documentation for 'Controller' type decorators"
click TypeReading "/binspector/modules/Primitive.html" "Documentation for 'Primitive' type decorators"
end
TypeReading --> Controller
s2 --> Transform[__Transform__ the value we read into something else]
click Transform "/binspector/modules/Transformer.html" "Documentation for 'Transformer' type decorators"
Transform --> Validate[__Validate__ the final value]
click Validate "/binspector/modules/Validator.html" "Documentation for 'Validator' type decorators"
Validate --> PostOperation[__Post__ property reading operations]
click PostOperation "/binspector/modules/PrePost.html" "Documentation for 'Post' type decorators"
end
PostOperation --> A@{ shape: framed-circle, label: "Stop" }
style Condition fill:blue,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
flowchart TB
subgraph s1[For each properties]
direction TB
PreOperation[__Pre__ property reading operations] --> Condition
click PreOperation "/binspector/modules/PrePost.html" "Documentation for 'Pre' type decorators"
Condition[__Condition__ get the definitive subtype to read based on current state] --> s2
click Condition "/binspector/modules/Condition.html" "Documentation for 'Condtion' type decorators"
subgraph s2[Reading subtype]
Controller[__Controller__ decides when to stop reading the subtype based on a set of arbitrary conditions] --> TypeReading[Read __Relation__ or __Primitive__]
click Controller "/binspector/modules/Controller.html" "Documentation for 'Controller' type decorators"
click TypeReading "/binspector/modules/Primitive.html" "Documentation for 'Primitive' type decorators"
end
TypeReading --> Controller
s2 --> Transform[__Transform__ the value we read into something else]
click Transform "/binspector/modules/Transformer.html" "Documentation for 'Transformer' type decorators"
Transform --> Validate[__Validate__ the final value]
click Validate "/binspector/modules/Validator.html" "Documentation for 'Validator' type decorators"
Validate --> PostOperation[__Post__ property reading operations]
click PostOperation "/binspector/modules/PrePost.html" "Documentation for 'Post' type decorators"
end
PostOperation --> A@{ shape: framed-circle, label: "Stop" }
style Condition fill:blue,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
Module definition of Condition property decorators.
The Condition decorators are used to handle scenarios where parts of a binary file format exist conditionally, based on values determined at runtime.
These decorators enable the parser to dynamically select the Primitive.Relation to read next, based on the provided conditions. This functionality is essential for parsing formats that have conditional properties or polymorphic structures.
Condition decorators are executed before reading a property to determine the type of the next relation to read.