rename XFactory.Regs to XFactory.Generators.

This commit is contained in:
2026-05-23 21:23:06 +08:00
parent 8b285cc863
commit 058003f395
155 changed files with 16416 additions and 1261 deletions
@@ -94,6 +94,43 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html">FanucGotoIterationDependency</a></dt>
<dd><p>Watchdog for Fanuc Custom Macro B GOTO loops. Holds a
<a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_MaxIterationsPerTarget">MaxIterationsPerTarget</a> limit (XML-persisted user config —
the soft cap above which the upcoming
<code>FanucGotoSyntax</code> stops firing and emits a warning) plus a
runtime per-target hit counter (<a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_CountByTarget">CountByTarget</a> — not
serialised, cleared at session start by
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_RunControlLines_System_String_System_Collections_Generic_IEnumerable_System_String__Hi_MachiningProcs_MachiningSession_Hi_MachiningProcs_SessionProgress_System_Threading_CancellationToken_">RunControlLines(string, IEnumerable&lt;string&gt;, MachiningSession, SessionProgress, CancellationToken)</a>).</p>
<p>
The dependency is syntax-managed: <code>FanucGotoSyntax</code> reads the
limit, increments the counter, and decides whether to fire. There is
no host <code>Func</code> provider — the dep is placed in
<a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.html">Hi.NcParsers.Dependencys.Fanuc</a> rather than
<a class="xref" href="Hi.NcParsers.Dependencys.SystemWired.html">Hi.NcParsers.Dependencys.SystemWired</a> because nothing outside the
syntax pipeline writes it; <a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_Reset">Reset()</a> is a plain method call
the runner invokes, not a host-wired Func.
</p>
<p>
The counter key is <code>(FileName, TargetN)</code> where <code>FileName</code>
is the source-level file path of the block containing the GOTO (the
relative path form carried on <a class="xref" href="Hi.NcParsers.Sentence.html#Hi_NcParsers_Sentence_FilePath">FilePath</a> — same
form used by <code>IndexedFileLine</code> labels). Source-level keying means
multiple inline invocations of the same subprogram pool their counts
(they ARE the same source-code GOTO), while two different files with
their own N100 stay isolated (they ARE different jumps).
</p>
<p>
Default <a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_MaxIterationsPerTarget">MaxIterationsPerTarget</a> is 1000 — a runaway-loop
guard, not a precise iteration budget. Legitimate macro loops
(multi-hole drill matrices, calibration sweeps) sit well below this;
truly infinite loops hit the limit fast. Projects with batch-style
macros that legitimately need higher counts can raise the value in
the project XML.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html">FanucParameterTable</a></dt>
<dd><p>Fanuc controller parameter table.
@@ -118,15 +155,24 @@ long-lived dependency object that owns this data.
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html">FanucToolOffsetVariableLookup</a></dt>
<dd><p>Fanuc-side adapter that exposes a wrapped <a class="xref" href="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html">ToolOffsetTable</a>
as an <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html">IVariableLookup</a> following Fanuc Memory C tool offset
addressing: <code>#2001+N → effective height of offset N</code>
(resolved at call time from the dependency list) as an
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html">IRuntimeVariableLookup</a> following Fanuc Memory C tool
offset addressing: <code>#2001+N → effective height of offset N</code>
(geometry wear).</p>
<p>
The underlying <a class="xref" href="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html">ToolOffsetTable</a> stays brand-neutral —
Heidenhain / Siemens can use the same storage with different addressing
by registering their own adapter alongside the table. Holds a reference
to the table rather than owning data so writes through the table show
up immediately in lookups via this adapter.
by registering their own adapter alongside the table. Stateless: holds
no reference of its own and resolves the table from the per-call
<code>dependencies</code> list, so XML round-trip is trivial (an empty element).
</p>
<p>
Registered on a brand preset's
VariableEvaluatorSyntax.RuntimeVariableLookups, not on
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_NcDependencyList">NcDependencyList</a> — the wrapper owns no
long-lived data, only the Fanuc-style id addressing scheme. The
underlying <a class="xref" href="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html">ToolOffsetTable</a> still lives in
<code>NcDependencyList</code> as the data dependency.
</p>
</dd>
</dl>