HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html

656 lines
27 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ModalCarrySyntax | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ModalCarrySyntax | HiAPI-C# 2025 ">
<meta name="description" content="Per-block modal-section carry. For each key in , if the current block has no section for that key, deep-clone the same section from the immediately previous block (which is itself guaranteed to carry it because every block is processed by this syntax) and set = inside the cloned section. Lets every block stand alone with its full modal context, so downstream readers (cache-file dumps, semantics, UI jumping to a single block) do not need to resolve modal state. A JSON section is a candidate for when ALL four criteria hold: Writers concentrated — one or two syntaxes own the section (e.g. / own MotionState; the call/return pair own SubProgramCall-derived state).Readers distributed — multiple downstream consumers each need the value, and none of them should walk back to find it. Single-reader sections do not benefit from blanket carry.Every block must see the section — cache-dump readers landing randomly, single-block UI views, and look-ahead syntaxes all require the section to be present on every block.Carry is unconditional — no frame-gating or other per-block veto. Sections that need conditional carry (e.g. &#39;s frame-aware Vars.Local dict-merge — carry only when MacroFrame matches) belong in the owning syntax&#39;s own carry logic, not here. A section failing any criterion should be carried through its owning syntax&#39;s own logic (single-step node.Previous read, or no carry at all if absence is meaningful — e.g. MacroFrame absent = main frame). This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still recognised on load for backward compatibility with previously-saved project files.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax">
<h1 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax" class="text-break">
Class ModalCarrySyntax
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcParsers.html">NcParsers</a>.<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.html">PostLogicSyntaxs</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Per-block modal-section carry. For each key in <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_TrackedKeys">TrackedKeys</a>,
if the current block has no section for that key, deep-clone the same
section from the immediately previous block (which is itself guaranteed
to carry it because every block is processed by this syntax) and set
<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxStageKeys.html#Hi_NcParsers_Syntaxs_SyntaxStageKeys_AddedByKey">AddedByKey</a> = <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_AddedByValue">AddedByValue</a>
inside the cloned section. Lets every block stand alone with its full
modal context, so downstream readers (cache-file dumps, semantics, UI
jumping to a single block) do not need
<a class="xref" href="Hi.Common.Collections.LazyLinkedListNode-1.html#Hi_Common_Collections_LazyLinkedListNode_1_EnumerateBack">EnumerateBack()</a> to resolve modal state.</p>
<p>
A JSON section is a candidate for <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_TrackedKeys">TrackedKeys</a> when ALL
four criteria hold:
<ol><li><b>Writers concentrated</b> — one or two syntaxes own the
section (e.g. <a class="xref" href="Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html">LinearMotionSyntax</a> /
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html">CircularMotionSyntax</a> own
<code>MotionState</code>; the call/return pair own
<code>SubProgramCall</code>-derived state).</li><li><b>Readers distributed</b> — multiple downstream consumers
each need the value, and none of them should walk back to find it.
Single-reader sections do not benefit from blanket carry.</li><li><b>Every block must see the section</b> — cache-dump readers
landing randomly, single-block UI views, and look-ahead syntaxes
all require the section to be present on every block.</li><li><b>Carry is unconditional</b> — no frame-gating or other
per-block veto. Sections that need conditional carry (e.g.
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html">FanucLocalVariableReadingSyntax</a>'s
frame-aware <code>Vars.Local</code> dict-merge — carry only when
<code>MacroFrame</code> matches) belong in the owning syntax's own
carry logic, not here.</li></ol>
A section failing any criterion should be carried through its owning
syntax's own logic (single-step <code>node.Previous</code> read, or no carry
at all if absence is meaningful — e.g. <code>MacroFrame</code> absent = main
frame).
<p>
This replaces the earlier <code>CacheSyntax</code> design (which sampled
every <code>Pace</code> blocks). The legacy <code>CacheSyntax</code> XName is still
recognised on load for backward compatibility with previously-saved
project files.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class ModalCarrySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ModalCarrySyntax</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.NcParsers.Syntaxs.ISituNcSyntax.html">ISituNcSyntax</a></div>
<div><a class="xref" href="Hi.NcParsers.Syntaxs.INcSyntax.html">INcSyntax</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax__ctor_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.#ctor*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax__ctor" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.#ctor">
ModalCarrySyntax()
</h3>
<div class="markdown level1 summary"><p>Creates an empty <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>; populate <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_TrackedKeys">TrackedKeys</a> before use.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ModalCarrySyntax()</code></pre>
</div>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax__ctor_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.#ctor*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax__ctor_System_Xml_Linq_XElement_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.#ctor(System.Xml.Linq.XElement)">
ModalCarrySyntax(XElement)
</h3>
<div class="markdown level1 summary"><p>Reconstructs a <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a> from a project XML element
previously produced by <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_MakeXmlSource_System_String_System_String_System_Boolean_">MakeXmlSource(string, string, bool)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ModalCarrySyntax(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><p>XML element carrying a <code>TrackedKeys</code> child with one <code>Key</code> per entry; null is treated as defaults.</p>
</dd>
</dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_AddedByValue" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.AddedByValue">
AddedByValue
</h3>
<div class="markdown level1 summary"><p>Value written under <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxStageKeys.html#Hi_NcParsers_Syntaxs_SyntaxStageKeys_AddedByKey">AddedByKey</a> on
each section this syntax deep-clones from the previous block.
Mirrors <a class="xref" href="Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html#Hi_NcParsers_InspectionSyntaxs_ProgramXyzBackfillSyntax_AddedByValue">AddedByValue</a>'s role
for its own synthesis — both let cache-file readers distinguish
post-Logic / Inspection stage injections from LogicSyntaxs-stage
authored values (the latter have no
<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxStageKeys.html#Hi_NcParsers_Syntaxs_SyntaxStageKeys_AddedByKey">AddedByKey</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string AddedByValue = &quot;ModalCarry&quot;</code></pre>
</div>
<h4 class="section">Field 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="properties">Properties
</h2>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Default_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Default*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Default" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Default">
Default
</h3>
<div class="markdown level1 summary"><p>Full-set carrier (<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Logic">Logic</a> <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_PostLogic">PostLogic</a>) —
retained for the legacy backstop in
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> that appends a single ModalCarry to
pre-3.1.168 project syntax lists. New brand syntax kits should
split into <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Logic">Logic</a> + <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_PostLogic">PostLogic</a> instead.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static ModalCarrySyntax Default { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Logic_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Logic*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Logic" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Logic">
Logic
</h3>
<div class="markdown level1 summary"><p>Logic-stage carrier — modal sections that are written in the Logic
bundle and never mutated by PostLogic. Carrying these at the end of
each block's Logic bundle keeps single-step
<code>node.Previous</code> modal lookups from Logic syntaxes correct, even
when a PostLogic syntax (e.g.
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a>) does <code>node.Next</code>
look-forward and drags subsequent blocks' Logic builds forward
before the intermediate block's PostLogic ModalCarry has run.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static ModalCarrySyntax Logic { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Name_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Name*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Name" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Name">
Name
</h3>
<div class="markdown level1 summary"><p>Syntax kind name (typically the concrete type name).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Name { 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>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_PostLogic_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.PostLogic*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_PostLogic" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.PostLogic">
PostLogic
</h3>
<div class="markdown level1 summary"><p>PostLogic-stage carrier — modal sections that may still be mutated
by PostLogic syntaxes after Logic completes. Today only
<code>MachineCoordinateState</code> qualifies (overwritten by
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a> with the radius-compensated
position). Carrying these at the end of PostLogic ensures the
modal value reflects the final, post-compensation state.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static ModalCarrySyntax PostLogic { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_TrackedKeys_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.TrackedKeys*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_TrackedKeys" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.TrackedKeys">
TrackedKeys
</h3>
<div class="markdown level1 summary"><p>Section keys to carry. Order-insensitive; duplicates ignored.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;string&gt; TrackedKeys { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_XName_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.XName*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_XName" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.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>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Build_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Build*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress)">
Build(LazyLinkedListNode&lt;SyntaxPiece&gt;, List&lt;INcDependency&gt;, NcDiagnosticProgress)
</h3>
<div class="markdown level1 summary"><p>Build syntax arrangement into the
<code class="paramref">syntaxPieceNode</code> in-place.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Build(LazyLinkedListNode&lt;SyntaxPiece&gt; node, List&lt;INcDependency&gt; ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>node</code> <a class="xref" href="Hi.Common.Collections.LazyLinkedListNode-1.html">LazyLinkedListNode</a>&lt;<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">SyntaxPiece</a>&gt;</dt>
<dd></dd>
<dt><code>ncDependencyList</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a>&gt;</dt>
<dd></dd>
<dt><code>ncDiagnosticProgress</code> <a class="xref" href="Hi.NcParsers.NcDiagnosticProgress.html">NcDiagnosticProgress</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_MakeXmlSource_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.MakeXmlSource*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.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_PostLogicSyntaxs_ModalCarrySyntax_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>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>