Class CallStack
JSON-section data shape representing the active call-frame stack on
a block. The call syntaxes push it
(SubProgramCallSyntax for M98/M198,
FanucMacroCallSyntax for G65,
FanucModalMacroSyntax's expansion
phase for G66 implicit triggers, and the Siemens and Heidenhain call
syntaxes), each stamping it on every piece of the inlined body; the
return block pops it (SubProgramReturnSyntax
on M99, the Siemens and Heidenhain return syntaxes on M17/RET, LBL 0 and
END PGM). A block without a stamp of its own takes the previous block's
section from ModalCarrySyntax at the
Logic stage — the main program's blocks after a return, blocks a jump
re-segments, the pieces of a section repeat whose host block has no
stack (the Siemens REPEAT and the Heidenhain CALL LBL REP
propagate the host's stack onto their pieces, so only a repeat in the
main frame leaves them without one); main-program blocks before the
first call carry none (the main frame).
The section is wrapped in a JsonObject rather than exposed as a bare JsonArray so it fits ModalCarry's "deep-clone JsonObject" carry pattern — the array of frames lives inside Frames.
public class CallStack
- Inheritance
-
CallStack
- Inherited Members
- Extension Methods
Properties
Frames
Ordered list of active call frames, bottom-of-stack first. Each entry is a CallFrame-shaped JSON object. Length 0 means the block is in the main (top-level) frame.
public JsonArray Frames { get; set; }