rename XFactory.Regs to XFactory.Generators.
This commit is contained in:
+177
-4
@@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Class LocalVariableLookup | HiAPI-C# 2025 ">
|
||||
|
||||
<meta name="description" content="Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current JSON, walking until the entry is found. Self-gates the id range so the evaluator's chain can fall through to the next lookup for out-of-range keys. Stateless and dependency-free — instances are interchangeable.">
|
||||
<meta name="description" content="Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current JSON, falling back to the immediately previous block when they share the same id. Self-gates the id range so the evaluator's chain can fall through to the next lookup for out-of-range keys. Two-step lookup (mirrors ): the current block sees writes that stamped at inline time (the call-line argument bindings) and writes that applied on this block before the lookup runs; the previous block (frame-checked) supplies body-internal writes from the prior block in the same macro frame. Looking past the previous block is unnecessary because the reader carries forward block-by-block within a frame. Frame isolation via : a previous block whose frame id differs from the current block's is skipped — a macro body's body-internal locals are invisible to the caller after return, and the caller's main-frame locals are invisible inside the macro. M98/M198 subprogram inlining () deliberately does not stamp on its inlined blocks, so the callee inherits the caller's frame and sees the caller's locals — matching real Fanuc M98 semantics. Stateless and dependency-free — instances are interchangeable.">
|
||||
<link rel="icon" href="../img/HiAPI.favicon.ico">
|
||||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../public/main.css">
|
||||
@@ -99,18 +99,40 @@ Class LocalVariableLookup
|
||||
|
||||
<div class="markdown summary"><p>Reads Fanuc-style local macro variables (<code>#1-#33</code>) from
|
||||
<code>Vars.Local</code> on the current <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">SyntaxPiece</a> JSON,
|
||||
walking <a class="xref" href="Hi.Common.Collections.LazyLinkedListNode-1.html#Hi_Common_Collections_LazyLinkedListNode_1_Previous">Previous</a> until the entry
|
||||
is found. Self-gates the id range so the evaluator's
|
||||
falling back to the immediately previous block when they share the
|
||||
same <a class="xref" href="Hi.NcParsers.Keywords.MacroFrame.html">MacroFrame</a> id. Self-gates the id range
|
||||
so the evaluator's
|
||||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html#Hi_NcParsers_EvaluationSyntaxs_VariableEvaluatorSyntax_RuntimeVariableLookups">RuntimeVariableLookups</a> chain can
|
||||
fall through to the next lookup for out-of-range keys.</p>
|
||||
<p>
|
||||
Two-step lookup (mirrors <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html">VolatileVariableLookup</a>): the
|
||||
current block sees writes that <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html">FanucMacroCallSyntax</a>
|
||||
stamped at inline time (the call-line argument bindings) and writes
|
||||
that <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html">FanucLocalVariableReadingSyntax</a>
|
||||
applied on this block before the lookup runs; the previous block
|
||||
(frame-checked) supplies body-internal writes from the prior block in
|
||||
the same macro frame. Looking past the previous block is unnecessary
|
||||
because the reader carries forward block-by-block within a frame.
|
||||
</p>
|
||||
<p>
|
||||
Frame isolation via <a class="xref" href="Hi.NcParsers.Keywords.MacroFrame.html">MacroFrame</a>: a previous
|
||||
block whose frame id differs from the current block's is skipped —
|
||||
a macro body's body-internal locals are invisible to the caller after
|
||||
return, and the caller's main-frame locals are invisible inside the
|
||||
macro. M98/M198 subprogram inlining
|
||||
(<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html">SubProgramCallSyntax</a>) deliberately
|
||||
does <i>not</i> stamp <a class="xref" href="Hi.NcParsers.Keywords.MacroFrame.html">MacroFrame</a> on its
|
||||
inlined blocks, so the callee inherits the caller's frame and sees
|
||||
the caller's locals — matching real Fanuc M98 semantics.
|
||||
</p>
|
||||
<p>
|
||||
Stateless and dependency-free — instances are interchangeable.
|
||||
</p>
|
||||
</div>
|
||||
<div class="markdown conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public class LocalVariableLookup : IRuntimeVariableLookup</code></pre>
|
||||
<pre><code class="lang-csharp hljs">public class LocalVariableLookup : IRuntimeVariableLookup, IMakeXmlSource</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -128,6 +150,7 @@ Stateless and dependency-free — instances are interchangeable.
|
||||
<dt>Implements</dt>
|
||||
<dd>
|
||||
<div><a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html">IRuntimeVariableLookup</a></div>
|
||||
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
@@ -188,6 +211,69 @@ Stateless and dependency-free — instances are interchangeable.
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="constructors">Constructors
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup__ctor_" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup__ctor" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor">
|
||||
LocalVariableLookup()
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Default constructor.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public LocalVariableLookup()</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup__ctor_" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup__ctor_System_Xml_Linq_XElement_" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor(System.Xml.Linq.XElement)">
|
||||
LocalVariableLookup(XElement)
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Loads from an XML element produced by <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_MakeXmlSource_System_String_System_String_System_Boolean_">MakeXmlSource(string, string, bool)</a>. Stateless — no fields to deserialise.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public LocalVariableLookup(XElement src)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>src</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="fields">Fields
|
||||
</h2>
|
||||
|
||||
@@ -254,6 +340,42 @@ Stateless and dependency-free — instances are interchangeable.
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="properties">Properties
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_XName_" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_XName" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName">
|
||||
XName
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>XML element name for <a class="xref" href="Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Generators">Generators</a> registration.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static string XName { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
@@ -302,6 +424,57 @@ this lookup's range or the value is vacant.</p>
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_MakeXmlSource_" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource(System.String,System.String,System.Boolean)">
|
||||
MakeXmlSource(string, string, bool)
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Creates an XML representation of the object.
|
||||
This method may also generate additional resources such as related files.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd><p>The base directory for resolving relative paths</p>
|
||||
</dd>
|
||||
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd><p>The relative file path for the XML source</p>
|
||||
</dd>
|
||||
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd><p>if true, the extended file creation is suppressed.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
|
||||
<dd><p>An XML element representing the object's state</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section" id="Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_MakeXmlSource_System_String_System_String_System_Boolean__remarks">Remarks</h4>
|
||||
<div class="markdown level1 remarks"><p>For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
|
||||
The <code class="paramref">baseDirectory</code> is typically the folder at the nearest configuration file folder.
|
||||
Since the folder can be moving with the configuration file.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user