fix bug of cubetree init SAT and triangles-tip-cube-corner margin case.

This commit is contained in:
2026-03-25 12:40:37 +08:00
parent ff2cfa6210
commit 8aa17a0280
58 changed files with 1123 additions and 986 deletions
@@ -164,10 +164,10 @@ Class RangeColorRule
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -164,10 +164,10 @@ Class RgbSeed
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -167,10 +167,10 @@ If the execution time is over the <a class="xref" href="Hi.Common.BlockingTimer.
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -174,10 +174,10 @@ Class FileLineIndex
<a class="xref" href="Hi.Common.FileLines.FileLineUtil.html#Hi_Common_FileLines_FileLineUtil_MixedIndex_Hi_Common_FileLines_IGetFileLineIndex_">FileLineUtil.MixedIndex(IGetFileLineIndex)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -156,10 +156,10 @@ Used for defining segment of data in collections or arrays.</p>
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -169,10 +169,10 @@ Class IntegerKeyDictionaryConverter&lt;TValue&gt;
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -163,10 +163,10 @@ Class IntegerKeyDictionaryConverter
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -269,96 +269,6 @@ Class PathUtil
<a id="Hi_Common_PathUtils_PathUtil_CombineAsSubDirectory_" data-uid="Hi.Common.PathUtils.PathUtil.CombineAsSubDirectory*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_CombineAsSubDirectory_System_String_System_String_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.CombineAsSubDirectory(System.String,System.String,System.String)">
CombineAsSubDirectory(string, string, string)
</h3>
<div class="markdown level1 summary"><p>Combines a base directory with a relative file path and appends a suffix
to derive a sub-directory path. The suffix is only appended when
<code class="paramref">relFile</code> is not null or whitespace.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string CombineAsSubDirectory(string baseDirectory, string relFile, string suffixIfAdded = &quot;-src&quot;)</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.</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.</p>
</dd>
<dt><code>suffixIfAdded</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The suffix appended to the combined path
when <code class="paramref">relFile</code> is not null or whitespace.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The combined sub-directory path with forward slashes as directory separators.</p>
</dd>
</dl>
<a id="Hi_Common_PathUtils_PathUtil_GetConcatedDirectoryName_" data-uid="Hi.Common.PathUtils.PathUtil.GetConcatedDirectoryName*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_GetConcatedDirectoryName_System_String_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetConcatedDirectoryName(System.String,System.String)">
GetConcatedDirectoryName(string, string)
</h3>
<div class="markdown level1 summary"><p>Gets the directory name from a combined base directory and relative file path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetConcatedDirectoryName(string baseDirectory, string relFile)</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</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</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The directory name of the combined path with forward slashes as directory separators</p>
</dd>
</dl>
<a id="Hi_Common_PathUtils_PathUtil_GetDirectoryName_" data-uid="Hi.Common.PathUtils.PathUtil.GetDirectoryName*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_GetDirectoryName_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetDirectoryName(System.String)">
@@ -398,10 +308,52 @@ when <code class="paramref">relFile</code> is not null or whitespace.</p>
<a id="Hi_Common_PathUtils_PathUtil_GetParentIgnoreTailSlash_" data-uid="Hi.Common.PathUtils.PathUtil.GetParentIgnoreTailSlash*"></a>
<a id="Hi_Common_PathUtils_PathUtil_GetFileDirectory_" data-uid="Hi.Common.PathUtils.PathUtil.GetFileDirectory*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_GetParentIgnoreTailSlash_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetParentIgnoreTailSlash(System.String)">
GetParentIgnoreTailSlash(string)
<h3 id="Hi_Common_PathUtils_PathUtil_GetFileDirectory_System_String_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetFileDirectory(System.String,System.String)">
GetFileDirectory(string, string)
</h3>
<div class="markdown level1 summary"><p>Gets the directory name from a combined base directory and relative file path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetFileDirectory(string baseDirectory, string relFile)</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</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</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The directory name of the combined path with forward slashes as directory separators</p>
</dd>
</dl>
<a id="Hi_Common_PathUtils_PathUtil_GetParentDirectory_" data-uid="Hi.Common.PathUtils.PathUtil.GetParentDirectory*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_GetParentDirectory_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetParentDirectory(System.String)">
GetParentDirectory(string)
</h3>
@@ -410,7 +362,7 @@ when <code class="paramref">relFile</code> is not null or whitespace.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetParentIgnoreTailSlash(this string path)</code></pre>
<pre><code class="lang-csharp hljs">public static string GetParentDirectory(this string path)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -527,10 +479,10 @@ when <code class="paramref">relFile</code> is not null or whitespace.</p>
<a id="Hi_Common_PathUtils_PathUtil_GetRelativePathIfIsDescendant_" data-uid="Hi.Common.PathUtils.PathUtil.GetRelativePathIfIsDescendant*"></a>
<a id="Hi_Common_PathUtils_PathUtil_GetRelativePathIfDescendant_" data-uid="Hi.Common.PathUtils.PathUtil.GetRelativePathIfDescendant*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_GetRelativePathIfIsDescendant_System_String_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetRelativePathIfIsDescendant(System.String,System.String)">
GetRelativePathIfIsDescendant(string, string)
<h3 id="Hi_Common_PathUtils_PathUtil_GetRelativePathIfDescendant_System_String_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetRelativePathIfDescendant(System.String,System.String)">
GetRelativePathIfDescendant(string, string)
</h3>
@@ -539,7 +491,7 @@ when <code class="paramref">relFile</code> is not null or whitespace.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetRelativePathIfIsDescendant(string relativeTo, string path)</code></pre>
<pre><code class="lang-csharp hljs">public static string GetRelativePathIfDescendant(string relativeTo, string path)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -570,6 +522,54 @@ Forward slashes are used as directory separators in either case.</p>
<a id="Hi_Common_PathUtils_PathUtil_GetResourceDirectory_" data-uid="Hi.Common.PathUtils.PathUtil.GetResourceDirectory*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_GetResourceDirectory_System_String_System_String_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.GetResourceDirectory(System.String,System.String,System.String)">
GetResourceDirectory(string, string, string)
</h3>
<div class="markdown level1 summary"><p>Combines a base directory with a relative file path and appends a suffix
to derive a sub-directory path. The suffix is only appended when
<code class="paramref">relFile</code> is not null or whitespace.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetResourceDirectory(string baseDirectory, string relFile, string suffixIfAdded = &quot;-src&quot;)</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.</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.</p>
</dd>
<dt><code>suffixIfAdded</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The suffix appended to the combined path
when <code class="paramref">relFile</code> is not null or whitespace.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The combined sub-directory path with forward slashes as directory separators.</p>
</dd>
</dl>
<a id="Hi_Common_PathUtils_PathUtil_IsDescendant_" data-uid="Hi.Common.PathUtils.PathUtil.IsDescendant*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_IsDescendant_System_IO_DirectoryInfo_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.IsDescendant(System.IO.DirectoryInfo,System.String)">
@@ -654,91 +654,10 @@ Forward slashes are used as directory separators in either case.</p>
<a id="Hi_Common_PathUtils_PathUtil_IsDescendantByRelPath_" data-uid="Hi.Common.PathUtils.PathUtil.IsDescendantByRelPath*"></a>
<a id="Hi_Common_PathUtils_PathUtil_NormalizeToForwardSlash_" data-uid="Hi.Common.PathUtils.PathUtil.NormalizeToForwardSlash*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_IsDescendantByRelPath_System_String_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.IsDescendantByRelPath(System.String,System.String)">
IsDescendantByRelPath(string, string)
</h3>
<div class="markdown level1 summary"><p>Determines whether a path is a descendant of a specified directory using relative path calculation.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool IsDescendantByRelPath(string ascendentDirectory, string descendantPath)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>ascendentDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The potential ancestor directory path</p>
</dd>
<dt><code>descendantPath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path to check</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>True if the path is a descendant of the directory; otherwise, false</p>
</dd>
</dl>
<a id="Hi_Common_PathUtils_PathUtil_RemoveTailSlashIfExisted_" data-uid="Hi.Common.PathUtils.PathUtil.RemoveTailSlashIfExisted*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_RemoveTailSlashIfExisted_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.RemoveTailSlashIfExisted(System.String)">
RemoveTailSlashIfExisted(string)
</h3>
<div class="markdown level1 summary"><p>Removes the trailing slash or backslash from a path if it exists.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string RemoveTailSlashIfExisted(this string path)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>path</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path to process</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path without a trailing slash or backslash</p>
</dd>
</dl>
<a id="Hi_Common_PathUtils_PathUtil_ReplaceDirectorySeparator_" data-uid="Hi.Common.PathUtils.PathUtil.ReplaceDirectorySeparator*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_ReplaceDirectorySeparator_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.ReplaceDirectorySeparator(System.String)">
ReplaceDirectorySeparator(string)
<h3 id="Hi_Common_PathUtils_PathUtil_NormalizeToForwardSlash_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.NormalizeToForwardSlash(System.String)">
NormalizeToForwardSlash(string)
</h3>
@@ -747,7 +666,7 @@ Forward slashes are used as directory separators in either case.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string ReplaceDirectorySeparator(this string src)</code></pre>
<pre><code class="lang-csharp hljs">public static string NormalizeToForwardSlash(this string src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -782,9 +701,9 @@ Forward slashes are used as directory separators in either case.</p>
</h3>
<div class="markdown level1 summary"><p>Resolves the sub-directory for loading with legacy fallback.
Returns the <a class="xref" href="Hi.Common.PathUtils.PathUtil.html#Hi_Common_PathUtils_PathUtil_CombineAsSubDirectory_System_String_System_String_System_String_">CombineAsSubDirectory(string, string, string)</a> path if it exists;
otherwise falls back to the legacy <a class="xref" href="Hi.Common.PathUtils.PathUtil.html#Hi_Common_PathUtils_PathUtil_GetConcatedDirectoryName_System_String_System_String_">GetConcatedDirectoryName(string, string)</a> path
if it exists; otherwise defaults to the <a class="xref" href="Hi.Common.PathUtils.PathUtil.html#Hi_Common_PathUtils_PathUtil_CombineAsSubDirectory_System_String_System_String_System_String_">CombineAsSubDirectory(string, string, string)</a> path.</p>
Returns the <a class="xref" href="Hi.Common.PathUtils.PathUtil.html#Hi_Common_PathUtils_PathUtil_GetResourceDirectory_System_String_System_String_System_String_">GetResourceDirectory(string, string, string)</a> path if it exists;
otherwise falls back to the legacy <a class="xref" href="Hi.Common.PathUtils.PathUtil.html#Hi_Common_PathUtils_PathUtil_GetFileDirectory_System_String_System_String_">GetFileDirectory(string, string)</a> path
if it exists; otherwise defaults to the <a class="xref" href="Hi.Common.PathUtils.PathUtil.html#Hi_Common_PathUtils_PathUtil_GetResourceDirectory_System_String_System_String_System_String_">GetResourceDirectory(string, string, string)</a> path.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -822,6 +741,45 @@ if it exists; otherwise defaults to the <a class="xref" href="Hi.Common.PathUtil
<a id="Hi_Common_PathUtils_PathUtil_TrimTrailingSlash_" data-uid="Hi.Common.PathUtils.PathUtil.TrimTrailingSlash*"></a>
<h3 id="Hi_Common_PathUtils_PathUtil_TrimTrailingSlash_System_String_" data-uid="Hi.Common.PathUtils.PathUtil.TrimTrailingSlash(System.String)">
TrimTrailingSlash(string)
</h3>
<div class="markdown level1 summary"><p>Removes the trailing slash or backslash from a path if it exists.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string TrimTrailingSlash(this string path)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>path</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path to process</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The path without a trailing slash or backslash</p>
</dd>
</dl>
</article>
@@ -164,10 +164,10 @@ Class RoutineBlocker
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -163,10 +163,10 @@ Class RoutineBlocker0
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -2,9 +2,9 @@
<html>
<head>
<meta charset="utf-8">
<title>Class XmlSourceAndFile&lt;T&gt; | HiAPI-C# 2025 </title>
<title>Class FileRefSource&lt;T&gt; | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class XmlSourceAndFile&lt;T&gt; | HiAPI-C# 2025 ">
<meta name="title" content="Class FileRefSource&lt;T&gt; | HiAPI-C# 2025 ">
<meta name="description" content="A class that combines an XML-serializable data object with its source file path.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
@@ -84,12 +84,12 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1">
<article data-uid="Hi.Common.XmlUtils.FileRefSource`1">
<h1 id="Hi_Common_XmlUtils_XmlSourceAndFile_1" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1" class="text-break">
Class XmlSourceAndFile&lt;T&gt;
<h1 id="Hi_Common_XmlUtils_FileRefSource_1" data-uid="Hi.Common.XmlUtils.FileRefSource`1" class="text-break">
Class FileRefSource&lt;T&gt;
</h1>
<div class="facts text-secondary">
@@ -102,7 +102,7 @@ Class XmlSourceAndFile&lt;T&gt;
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class XmlSourceAndFile&lt;T&gt; : ISourceFile where T : class, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public class FileRefSource&lt;T&gt; : ISourceFile where T : class, IMakeXmlSource</code></pre>
</div>
@@ -118,7 +118,7 @@ Class XmlSourceAndFile&lt;T&gt;
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">XmlSourceAndFile&lt;T&gt;</span></div>
<div><span class="xref">FileRefSource&lt;T&gt;</span></div>
</dd>
</dl>
@@ -190,10 +190,10 @@ Class XmlSourceAndFile&lt;T&gt;
</h2>
<a id="Hi_Common_XmlUtils_XmlSourceAndFile_1__ctor_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.#ctor*"></a>
<a id="Hi_Common_XmlUtils_FileRefSource_1__ctor_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.#ctor*"></a>
<h3 id="Hi_Common_XmlUtils_XmlSourceAndFile_1__ctor" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.#ctor">
XmlSourceAndFile()
<h3 id="Hi_Common_XmlUtils_FileRefSource_1__ctor" data-uid="Hi.Common.XmlUtils.FileRefSource`1.#ctor">
FileRefSource()
</h3>
@@ -202,7 +202,7 @@ Class XmlSourceAndFile&lt;T&gt;
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XmlSourceAndFile()</code></pre>
<pre><code class="lang-csharp hljs">public FileRefSource()</code></pre>
</div>
@@ -217,10 +217,10 @@ Class XmlSourceAndFile&lt;T&gt;
<a id="Hi_Common_XmlUtils_XmlSourceAndFile_1__ctor_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.#ctor*"></a>
<a id="Hi_Common_XmlUtils_FileRefSource_1__ctor_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.#ctor*"></a>
<h3 id="Hi_Common_XmlUtils_XmlSourceAndFile_1__ctor_System_String__0_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.#ctor(System.String,`0)">
XmlSourceAndFile(string, T)
<h3 id="Hi_Common_XmlUtils_FileRefSource_1__ctor_System_String__0_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.#ctor(System.String,`0)">
FileRefSource(string, T)
</h3>
@@ -229,7 +229,7 @@ Class XmlSourceAndFile&lt;T&gt;
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XmlSourceAndFile(string file, T data)</code></pre>
<pre><code class="lang-csharp hljs">public FileRefSource(string file, T data)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -257,9 +257,9 @@ Class XmlSourceAndFile&lt;T&gt;
</h2>
<a id="Hi_Common_XmlUtils_XmlSourceAndFile_1_Data_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.Data*"></a>
<a id="Hi_Common_XmlUtils_FileRefSource_1_Data_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.Data*"></a>
<h3 id="Hi_Common_XmlUtils_XmlSourceAndFile_1_Data" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.Data">
<h3 id="Hi_Common_XmlUtils_FileRefSource_1_Data" data-uid="Hi.Common.XmlUtils.FileRefSource`1.Data">
Data
</h3>
@@ -289,9 +289,9 @@ Class XmlSourceAndFile&lt;T&gt;
<a id="Hi_Common_XmlUtils_XmlSourceAndFile_1_SourceFile_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.SourceFile*"></a>
<a id="Hi_Common_XmlUtils_FileRefSource_1_SourceFile_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.SourceFile*"></a>
<h3 id="Hi_Common_XmlUtils_XmlSourceAndFile_1_SourceFile" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.SourceFile">
<h3 id="Hi_Common_XmlUtils_FileRefSource_1_SourceFile" data-uid="Hi.Common.XmlUtils.FileRefSource`1.SourceFile">
SourceFile
</h3>
@@ -325,10 +325,10 @@ Class XmlSourceAndFile&lt;T&gt;
</h2>
<a id="Hi_Common_XmlUtils_XmlSourceAndFile_1_MakeXmlSourceWithRebaseFile_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.MakeXmlSourceWithRebaseFile*"></a>
<a id="Hi_Common_XmlUtils_FileRefSource_1_MakeXmlSourceToFileRef_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.MakeXmlSourceToFileRef*"></a>
<h3 id="Hi_Common_XmlUtils_XmlSourceAndFile_1_MakeXmlSourceWithRebaseFile_System_String_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.MakeXmlSourceWithRebaseFile(System.String)">
MakeXmlSourceWithRebaseFile(string)
<h3 id="Hi_Common_XmlUtils_FileRefSource_1_MakeXmlSourceToFileRef_System_String_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.MakeXmlSourceToFileRef(System.String)">
MakeXmlSourceToFileRef(string)
</h3>
@@ -337,7 +337,7 @@ Class XmlSourceAndFile&lt;T&gt;
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XElement MakeXmlSourceWithRebaseFile(string baseDirectory)</code></pre>
<pre><code class="lang-csharp hljs">public XElement MakeXmlSourceToFileRef(string baseDirectory)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -364,10 +364,10 @@ Class XmlSourceAndFile&lt;T&gt;
<a id="Hi_Common_XmlUtils_XmlSourceAndFile_1_Set_" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.Set*"></a>
<a id="Hi_Common_XmlUtils_FileRefSource_1_Set_" data-uid="Hi.Common.XmlUtils.FileRefSource`1.Set*"></a>
<h3 id="Hi_Common_XmlUtils_XmlSourceAndFile_1_Set_Hi_Common_XmlUtils_XmlSourceAndFile__0__" data-uid="Hi.Common.XmlUtils.XmlSourceAndFile`1.Set(Hi.Common.XmlUtils.XmlSourceAndFile{`0})">
Set(XmlSourceAndFile&lt;T&gt;)
<h3 id="Hi_Common_XmlUtils_FileRefSource_1_Set_Hi_Common_XmlUtils_FileRefSource__0__" data-uid="Hi.Common.XmlUtils.FileRefSource`1.Set(Hi.Common.XmlUtils.FileRefSource{`0})">
Set(FileRefSource&lt;T&gt;)
</h3>
@@ -376,12 +376,12 @@ Class XmlSourceAndFile&lt;T&gt;
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Set(XmlSourceAndFile&lt;T&gt; src)</code></pre>
<pre><code class="lang-csharp hljs">public void Set(FileRefSource&lt;T&gt; src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Common.XmlUtils.XmlSourceAndFile-1.html">XmlSourceAndFile</a>&lt;T&gt;</dt>
<dt><code>src</code> <a class="xref" href="Hi.Common.XmlUtils.FileRefSource-1.html">FileRefSource</a>&lt;T&gt;</dt>
<dd><p>The source XmlSource to copy from</p>
</dd>
</dl>
@@ -125,10 +125,10 @@ Interface IMakeXmlSource
<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.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -358,10 +358,10 @@ This overload discards the relative file path output.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenXmlFileSourceByChild_" data-uid="Hi.Common.XmlUtils.XFactory.GenXmlFileSourceByChild*"></a>
<a id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByChild_" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByChild*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenXmlFileSourceByChild__1_System_Xml_Linq_XElement_System_String_Hi_Common_XmlUtils_GenMode_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenXmlFileSourceByChild``1(System.Xml.Linq.XElement,System.String,Hi.Common.XmlUtils.GenMode,System.Object[])">
GenXmlFileSourceByChild&lt;T&gt;(XElement, string, GenMode, params object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByChild__1_System_Xml_Linq_XElement_System_String_Hi_Common_XmlUtils_GenMode_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByChild``1(System.Xml.Linq.XElement,System.String,Hi.Common.XmlUtils.GenMode,System.Object[])">
GenFileRefSourceByChild&lt;T&gt;(XElement, string, GenMode, params object[])
</h3>
@@ -370,7 +370,7 @@ This overload discards the relative file path output.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XmlSourceAndFile&lt;T&gt; GenXmlFileSourceByChild&lt;T&gt;(XElement src, string baseDirectory, GenMode genMode, params object[] res) where T : class, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSourceByChild&lt;T&gt;(XElement src, string baseDirectory, GenMode genMode, params object[] res) where T : class, IMakeXmlSource</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -391,7 +391,7 @@ This overload discards the relative file path output.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.XmlUtils.XmlSourceAndFile-1.html">XmlSourceAndFile</a>&lt;T&gt;</dt>
<dt><a class="xref" href="Hi.Common.XmlUtils.FileRefSource-1.html">FileRefSource</a>&lt;T&gt;</dt>
<dd><p>An XmlSourceAndFile object containing the generated object and its file path</p>
</dd>
</dl>
@@ -412,10 +412,10 @@ This overload discards the relative file path output.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenXmlFileSourceByFile_" data-uid="Hi.Common.XmlUtils.XFactory.GenXmlFileSourceByFile*"></a>
<a id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByFile_" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByFile*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenXmlFileSourceByFile__1_System_String_System_String_Hi_Common_XmlUtils_GenMode_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenXmlFileSourceByFile``1(System.String,System.String,Hi.Common.XmlUtils.GenMode,System.Object[])">
GenXmlFileSourceByFile&lt;T&gt;(string, string, GenMode, params object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSourceByFile__1_System_String_System_String_Hi_Common_XmlUtils_GenMode_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSourceByFile``1(System.String,System.String,Hi.Common.XmlUtils.GenMode,System.Object[])">
GenFileRefSourceByFile&lt;T&gt;(string, string, GenMode, params object[])
</h3>
@@ -424,7 +424,7 @@ This overload discards the relative file path output.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XmlSourceAndFile&lt;T&gt; GenXmlFileSourceByFile&lt;T&gt;(string baseDirectory, string relFile, GenMode genMode, params object[] res) where T : class, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSourceByFile&lt;T&gt;(string baseDirectory, string relFile, GenMode genMode, params object[] res) where T : class, IMakeXmlSource</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -445,7 +445,7 @@ This overload discards the relative file path output.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.XmlUtils.XmlSourceAndFile-1.html">XmlSourceAndFile</a>&lt;T&gt;</dt>
<dt><a class="xref" href="Hi.Common.XmlUtils.FileRefSource-1.html">FileRefSource</a>&lt;T&gt;</dt>
<dd><p>An XmlSourceAndFile object containing the generated object and its file path</p>
</dd>
</dl>
@@ -466,10 +466,10 @@ This overload discards the relative file path output.</p>
<a id="Hi_Common_XmlUtils_XFactory_GenXmlSourceAndFile_" data-uid="Hi.Common.XmlUtils.XFactory.GenXmlSourceAndFile*"></a>
<a id="Hi_Common_XmlUtils_XFactory_GenFileRefSource_" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSource*"></a>
<h3 id="Hi_Common_XmlUtils_XFactory_GenXmlSourceAndFile__1_System_Xml_Linq_XElement_System_String_Hi_Common_XmlUtils_GenMode_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenXmlSourceAndFile``1(System.Xml.Linq.XElement,System.String,Hi.Common.XmlUtils.GenMode,System.Object[])">
GenXmlSourceAndFile&lt;T&gt;(XElement, string, GenMode, params object[])
<h3 id="Hi_Common_XmlUtils_XFactory_GenFileRefSource__1_System_Xml_Linq_XElement_System_String_Hi_Common_XmlUtils_GenMode_System_Object___" data-uid="Hi.Common.XmlUtils.XFactory.GenFileRefSource``1(System.Xml.Linq.XElement,System.String,Hi.Common.XmlUtils.GenMode,System.Object[])">
GenFileRefSource&lt;T&gt;(XElement, string, GenMode, params object[])
</h3>
@@ -478,7 +478,7 @@ This overload discards the relative file path output.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XmlSourceAndFile&lt;T&gt; GenXmlSourceAndFile&lt;T&gt;(XElement src, string baseDirectory, GenMode genMode, params object[] res) where T : class, IMakeXmlSource</code></pre>
<pre><code class="lang-csharp hljs">public static FileRefSource&lt;T&gt; GenFileRefSource&lt;T&gt;(XElement src, string baseDirectory, GenMode genMode, params object[] res) where T : class, IMakeXmlSource</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -499,7 +499,7 @@ This overload discards the relative file path output.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.XmlUtils.XmlSourceAndFile-1.html">XmlSourceAndFile</a>&lt;T&gt;</dt>
<dt><a class="xref" href="Hi.Common.XmlUtils.FileRefSource-1.html">FileRefSource</a>&lt;T&gt;</dt>
<dd><p>An XmlSourceAndFile object containing the generated object and its file path</p>
</dd>
</dl>
@@ -154,37 +154,6 @@ Class XmlUtil
<h3 id="Hi_Common_XmlUtils_XmlUtil_FileXName" data-uid="Hi.Common.XmlUtils.XmlUtil.FileXName">
FileXName
</h3>
<div class="markdown level1 summary"><p>Alias for XmlFileXName, used for backward compatibility.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string FileXName = &quot;XmlSource&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>
<h3 id="Hi_Common_XmlUtils_XmlUtil_SelfHostName" data-uid="Hi.Common.XmlUtils.XmlUtil.SelfHostName">
SelfHostName
@@ -301,101 +270,6 @@ Class XmlUtil
<a id="Hi_Common_XmlUtils_XmlUtil_GetFileUnwrappedXElement_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetFileUnwrappedXElement*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_GetFileUnwrappedXElement_System_Xml_Linq_XElement_System_String_System_String__" data-uid="Hi.Common.XmlUtils.XmlUtil.GetFileUnwrappedXElement(System.Xml.Linq.XElement,System.String,System.String@)">
GetFileUnwrappedXElement(XElement, string, out string)
</h3>
<div class="markdown level1 summary"><p>Unwraps a file reference XML element to load its actual content.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XElement GetFileUnwrappedXElement(this XElement src, string baseDirectory, out string relFile)</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>The source XML element that may be a file reference</p>
</dd>
<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 paths</p>
</dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Output parameter that receives the relative file path if src is a file reference, or null otherwise</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>If src is a file reference element, returns the XML content loaded from the referenced file;
otherwise, returns the original element</p>
</dd>
</dl>
<a id="Hi_Common_XmlUtils_XmlUtil_GetFileWrappedXElement_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetFileWrappedXElement*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_GetFileWrappedXElement_System_Xml_Linq_XElement_System_String_System_String_System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetFileWrappedXElement(System.Xml.Linq.XElement,System.String,System.String,System.Boolean)">
GetFileWrappedXElement(XElement, string, string, bool)
</h3>
<div class="markdown level1 summary"><p>Wraps an XML element in a file reference element or returns it as-is.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XElement GetFileWrappedXElement(this XElement src, string baseDirectory, string sourceFile, bool exhibitionOnly)</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>The source XML element to wrap</p>
</dd>
<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 paths</p>
</dd>
<dt><code>sourceFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path to save the element to, or null to return the element as-is</p>
</dd>
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>See <a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html#Hi_Common_XmlUtils_IMakeXmlSource_MakeXmlSource_System_String_System_String_System_Boolean_">MakeXmlSource(string, string, bool)</a> for parameter description.</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>If sourceFile is null, returns the original element;
otherwise, saves the element to the specified file and returns a file reference element</p>
</dd>
</dl>
<a id="Hi_Common_XmlUtils_XmlUtil_GetFirstChildElement_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetFirstChildElement*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_GetFirstChildElement_System_Xml_Linq_XElement_" data-uid="Hi.Common.XmlUtils.XmlUtil.GetFirstChildElement(System.Xml.Linq.XElement)">
@@ -528,10 +402,102 @@ otherwise, saves the element to the specified file and returns a file reference
<a id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceFile*"></a>
<a id="Hi_Common_XmlUtils_XmlUtil_LoadFromFileRef_" data-uid="Hi.Common.XmlUtils.XmlUtil.LoadFromFileRef*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceFile(Hi.Common.XmlUtils.IMakeXmlSource,System.String,System.Boolean)">
MakeXmlSourceFile(IMakeXmlSource, string, bool)
<h3 id="Hi_Common_XmlUtils_XmlUtil_LoadFromFileRef_System_Xml_Linq_XElement_System_String_System_String__" data-uid="Hi.Common.XmlUtils.XmlUtil.LoadFromFileRef(System.Xml.Linq.XElement,System.String,System.String@)">
LoadFromFileRef(XElement, string, out string)
</h3>
<div class="markdown level1 summary"><p>Unwraps a file reference XML element to load its actual content.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XElement LoadFromFileRef(this XElement src, string baseDirectory, out string relFile)</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>The source XML element that may be a file reference</p>
</dd>
<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 paths</p>
</dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Output parameter that receives the relative file path if src is a file reference, or null otherwise</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>If src is a file reference element, returns the XML content loaded from the referenced file;
otherwise, returns the original element</p>
</dd>
</dl>
<a id="Hi_Common_XmlUtils_XmlUtil_LoadWithFileRefSupport_" data-uid="Hi.Common.XmlUtils.XmlUtil.LoadWithFileRefSupport*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_LoadWithFileRefSupport_System_Xml_Linq_XElement_System_String_Hi_Common_XmlUtils_SetFileDelegate_" data-uid="Hi.Common.XmlUtils.XmlUtil.LoadWithFileRefSupport(System.Xml.Linq.XElement,System.String,Hi.Common.XmlUtils.SetFileDelegate)">
LoadWithFileRefSupport(XElement, string, SetFileDelegate)
</h3>
<div class="markdown level1 summary"><p>Unwraps an XML element if it contains a file reference element.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XElement LoadWithFileRefSupport(this XElement src, string baseDirectory, SetFileDelegate setFileAction)</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>The source XML element that may contain a file reference</p>
</dd>
<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 paths</p>
</dd>
<dt><code>setFileAction</code> <a class="xref" href="Hi.Common.XmlUtils.SetFileDelegate.html">SetFileDelegate</a></dt>
<dd><p>Action to execute with the file path, or null if no file reference is found</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>If the source element contains a file reference, returns the XML content loaded from the referenced file;
otherwise, returns the original element</p>
</dd>
</dl>
<a id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceToFile*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceToFile(Hi.Common.XmlUtils.IMakeXmlSource,System.String,System.Boolean)">
MakeXmlSourceToFile(IMakeXmlSource, string, bool)
</h3>
@@ -540,7 +506,7 @@ otherwise, saves the element to the specified file and returns a file reference
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void MakeXmlSourceFile(this IMakeXmlSource src, string filePath, bool exhibitionOnly = false)</code></pre>
<pre><code class="lang-csharp hljs">public static void MakeXmlSourceToFile(this IMakeXmlSource src, string filePath, bool exhibitionOnly = false)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -567,10 +533,10 @@ otherwise, saves the element to the specified file and returns a file reference
<a id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceWithRebaseFile*"></a>
<a id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceToFileRef*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceWithRebaseFile(Hi.Common.XmlUtils.IMakeXmlSource,System.String,System.String,System.Boolean)">
MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)
<h3 id="Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.MakeXmlSourceToFileRef(Hi.Common.XmlUtils.IMakeXmlSource,System.String,System.String,System.Boolean)">
MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)
</h3>
@@ -579,7 +545,7 @@ otherwise, saves the element to the specified file and returns a file reference
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XElement MakeXmlSourceWithRebaseFile(this IMakeXmlSource src, string baseDirectory, string relFile, bool exhibitionOnly)</code></pre>
<pre><code class="lang-csharp hljs">public static XElement MakeXmlSourceToFileRef(this IMakeXmlSource src, string baseDirectory, string relFile, bool exhibitionOnly)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -709,6 +675,55 @@ otherwise, saves the XML to the specified file and returns a file reference elem
<a id="Hi_Common_XmlUtils_XmlUtil_SaveToFileRef_" data-uid="Hi.Common.XmlUtils.XmlUtil.SaveToFileRef*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_SaveToFileRef_System_Xml_Linq_XElement_System_String_System_String_System_Boolean_" data-uid="Hi.Common.XmlUtils.XmlUtil.SaveToFileRef(System.Xml.Linq.XElement,System.String,System.String,System.Boolean)">
SaveToFileRef(XElement, string, string, bool)
</h3>
<div class="markdown level1 summary"><p>Wraps an XML element in a file reference element or returns it as-is.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XElement SaveToFileRef(this XElement src, string baseDirectory, string sourceFile, bool exhibitionOnly)</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>The source XML element to wrap</p>
</dd>
<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 paths</p>
</dd>
<dt><code>sourceFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path to save the element to, or null to return the element as-is</p>
</dd>
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>See <a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html#Hi_Common_XmlUtils_IMakeXmlSource_MakeXmlSource_System_String_System_String_System_Boolean_">MakeXmlSource(string, string, bool)</a> for parameter description.</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>If sourceFile is null, returns the original element;
otherwise, saves the element to the specified file and returns a file reference element</p>
</dd>
</dl>
<a id="Hi_Common_XmlUtils_XmlUtil_SetNameNote_" data-uid="Hi.Common.XmlUtils.XmlUtil.SetNameNote*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_SetNameNote_Hi_Common_INameNote_System_Xml_Linq_XElement_" data-uid="Hi.Common.XmlUtils.XmlUtil.SetNameNote(Hi.Common.INameNote,System.Xml.Linq.XElement)">
@@ -793,52 +808,6 @@ otherwise, saves the XML to the specified file and returns a file reference elem
<a id="Hi_Common_XmlUtils_XmlUtil_UnWrapIfFileBased_" data-uid="Hi.Common.XmlUtils.XmlUtil.UnWrapIfFileBased*"></a>
<h3 id="Hi_Common_XmlUtils_XmlUtil_UnWrapIfFileBased_System_Xml_Linq_XElement_System_String_Hi_Common_XmlUtils_SetFileDelegate_" data-uid="Hi.Common.XmlUtils.XmlUtil.UnWrapIfFileBased(System.Xml.Linq.XElement,System.String,Hi.Common.XmlUtils.SetFileDelegate)">
UnWrapIfFileBased(XElement, string, SetFileDelegate)
</h3>
<div class="markdown level1 summary"><p>Unwraps an XML element if it contains a file reference element.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static XElement UnWrapIfFileBased(this XElement src, string baseDirectory, SetFileDelegate setFileAction)</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>The source XML element that may contain a file reference</p>
</dd>
<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 paths</p>
</dd>
<dt><code>setFileAction</code> <a class="xref" href="Hi.Common.XmlUtils.SetFileDelegate.html">SetFileDelegate</a></dt>
<dd><p>Action to execute with the file path, or null if no file reference is found</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>If the source element contains a file reference, returns the XML content loaded from the referenced file;
otherwise, returns the original element</p>
</dd>
</dl>
</article>
@@ -95,13 +95,13 @@
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a></dt>
<dd><p>Factory class for generating objects from XML elements using registered generator functions.</p>
<dt><a class="xref" href="Hi.Common.XmlUtils.FileRefSource-1.html">FileRefSource&lt;T&gt;</a></dt>
<dd><p>A class that combines an XML-serializable data object with its source file path.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Common.XmlUtils.XmlSourceAndFile-1.html">XmlSourceAndFile&lt;T&gt;</a></dt>
<dd><p>A class that combines an XML-serializable data object with its source file path.</p>
<dt><a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a></dt>
<dd><p>Factory class for generating objects from XML elements using registered generator functions.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -159,10 +159,10 @@ The data contains in a <a class="xref" href="Hi.Geom.Box3d.html">Box3d</a> is <a
<a class="xref" href="Hi.Common.BinIoUtil.html#Hi_Common_BinIoUtil_ToBytes_Hi_Common_IWriteBin_">BinIoUtil.ToBytes(IWriteBin)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -162,10 +162,10 @@ Class Cylindroid
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -162,10 +162,10 @@ Class ExtendedCylinder
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -157,10 +157,10 @@ Class GeomCombination
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -126,10 +126,10 @@ Interface IStlSource
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -152,10 +152,10 @@ Class PairZr
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -156,10 +156,10 @@ Class PolarResolution2d
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -160,10 +160,10 @@ Class StlFile
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -151,10 +151,10 @@ Class FileTimeSection
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceFile(IMakeXmlSource, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceWithRebaseFile_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceWithRebaseFile(IMakeXmlSource, string, string, bool)</a>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_MakeXmlSourceToFileRef_Hi_Common_XmlUtils_IMakeXmlSource_System_String_System_String_System_Boolean_">XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.XmlUtils.XmlUtil.html#Hi_Common_XmlUtils_XmlUtil_SaveToByteArrayAsync_Hi_Common_XmlUtils_IMakeXmlSource_System_String_">XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string)</a>
@@ -192,6 +192,14 @@ Heidenhain equivalent: PLANE SPATIAL (separate syntax).
<div class="markdown level0 remarks"><p>G68.2 optionally uses <a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a> dependency for IK refinement.
The ZXZ euler convention is Fanuc-specific:
<code>Rz(K) * Rx(J) * Rz(I) * Translate(origin)</code>.</p>
<p>
Optional A/B/C parameters are post-processor rotary axis hints.
When present and <a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a> is available,
the tilt is computed as:
<code>kinematicRotation(postAbc) * orientationDelta * Translate(origin)</code>
where <code>orientationDelta = kinematicRotation(ijkAbc).Inverse * ijkRotation</code>
preserves the exact IJK orientation while aligning with the post-processor's solution.
</p>
</div>
@@ -372,44 +372,6 @@ Returns identity if not found.</p>
<a id="Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_ParseDouble_" data-uid="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.ParseDouble*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_ParseDouble_System_Text_Json_Nodes_JsonNode_" data-uid="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.ParseDouble(System.Text.Json.Nodes.JsonNode)">
ParseDouble(JsonNode)
</h3>
<div class="markdown level1 summary"><p>Parses a double from a JsonNode that may be a number or a string.
Returns 0 if null or unparseable.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static double ParseDouble(JsonNode node)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>node</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonnode">JsonNode</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_TryHandleG69_" data-uid="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.TryHandleG69*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_TryHandleG69_System_Text_Json_Nodes_JsonObject_System_Text_Json_Nodes_JsonObject_" data-uid="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.TryHandleG69(System.Text.Json.Nodes.JsonObject,System.Text.Json.Nodes.JsonObject)">
@@ -184,8 +184,11 @@ Note that the <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFla
<h2 id="Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>Examples:</p>
<ul><li>G54.1P1 → {"G54.1": {"P": "1"}}</li><li>G10L2P1 → {"G10": {"L": "2", "P": "1"}}</li><li>G54.1P#1 → {"G54.1": {"P": "#1"}} (Fanuc variable)</li><li>G54.1PQ1 → {"G54.1": {"P": "Q1"}} (Heidenhain variable)</li></ul>
<div class="markdown level0 remarks"><p>Parameters can be stored as typed values via <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_FloatParamPrefixes">FloatParamPrefixes</a>
and <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_IntParamPrefixes">IntParamPrefixes</a> (set via property initializer):</p>
<ul><li><a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_ParamPrefixes">ParamPrefixes</a> — stored as string (text, for variables like #1, Q2)</li><li><a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_FloatParamPrefixes">FloatParamPrefixes</a> — stored as <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a> when parseable, string otherwise</li><li><a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_IntParamPrefixes">IntParamPrefixes</a> — stored as <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a> when parseable, string otherwise</li></ul>
Examples:
<ul><li>G54.1P1 → {"G54.1": {"P": "1"}} (text)</li><li>G68.2 X0 I180 → {"G68.2": {"X": 0.0, "I": 180.0}} (float via property initializer)</li><li>G54.1P#1 → {"G54.1": {"P": "#1"}} (Fanuc variable, kept as string)</li><li>G54.1PQ1 → {"G54.1": {"P": "Q1"}} (Heidenhain variable)</li></ul>
</div>
@@ -200,7 +203,9 @@ Note that the <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFla
</h3>
<div class="markdown level1 summary"><p>Creates a new ParameterizedFlagSyntax instance.</p>
<div class="markdown level1 summary"><p>Creates a new ParameterizedFlagSyntax instance.
Use property initializers for <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_FloatParamPrefixes">FloatParamPrefixes</a> and
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_IntParamPrefixes">IntParamPrefixes</a> to enable typed parameter storage.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -337,6 +342,74 @@ Note that the <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFla
<a id="Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_FloatParamPrefixes_" data-uid="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.FloatParamPrefixes*"></a>
<h3 id="Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_FloatParamPrefixes" data-uid="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.FloatParamPrefixes">
FloatParamPrefixes
</h3>
<div class="markdown level1 summary"><p>Parameter prefixes stored as <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a> when parseable,
string otherwise (for variable references).
Set via property initializer for typed G-code parameters.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;string&gt; FloatParamPrefixes { 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_ParsingSyntaxs_ParameterizedFlagSyntax_IntParamPrefixes_" data-uid="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.IntParamPrefixes*"></a>
<h3 id="Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_IntParamPrefixes" data-uid="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.IntParamPrefixes">
IntParamPrefixes
</h3>
<div class="markdown level1 summary"><p>Parameter prefixes stored as <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a> when parseable,
string otherwise (for variable references).
Set via property initializer for typed G-code parameters.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public List&lt;string&gt; IntParamPrefixes { 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_ParsingSyntaxs_ParameterizedFlagSyntax_Name_" data-uid="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.Name*"></a>
<h3 id="Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_Name" data-uid="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.Name">
@@ -375,7 +448,7 @@ Note that the <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFla
</h3>
<div class="markdown level1 summary"><p>Parameter prefixes to extract (e.g., [&ldquo;P&rdquo;, &ldquo;L&rdquo;, &ldquo;H&rdquo;]).
<div class="markdown level1 summary"><p>Parameter prefixes to extract as text string (e.g., [&ldquo;P&rdquo;, &ldquo;L&rdquo;, &ldquo;H&rdquo;]).
Multiple parameters can be attached to one code.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -394,6 +394,120 @@ The text is changed by replacing tag and value to empty string.</p>
<a id="Hi_NcParsers_SoftNcUtil_HasFlagInArray_" data-uid="Hi.NcParsers.SoftNcUtil.HasFlagInArray*"></a>
<h3 id="Hi_NcParsers_SoftNcUtil_HasFlagInArray_System_Text_Json_Nodes_JsonObject_System_String_" data-uid="Hi.NcParsers.SoftNcUtil.HasFlagInArray(System.Text.Json.Nodes.JsonObject,System.String)">
HasFlagInArray(JsonObject, string)
</h3>
<div class="markdown level1 summary"><p>Checks if a specific flag string exists in the <code>Parsing.Flags</code> JsonArray.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool HasFlagInArray(this JsonObject parsing, string flag)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>parsing</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a></dt>
<dd></dd>
<dt><code>flag</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_SoftNcUtil_ParseDouble_" data-uid="Hi.NcParsers.SoftNcUtil.ParseDouble*"></a>
<h3 id="Hi_NcParsers_SoftNcUtil_ParseDouble_System_Text_Json_Nodes_JsonNode_" data-uid="Hi.NcParsers.SoftNcUtil.ParseDouble(System.Text.Json.Nodes.JsonNode)">
ParseDouble(JsonNode)
</h3>
<div class="markdown level1 summary"><p>Parses a double from a JsonNode that may be a number or a string.
Extends <a class="xref" href="Hi.Common.JsonUtil.html#Hi_Common_JsonUtil_GetDouble_System_Text_Json_Nodes_JsonNode_">GetDouble(JsonNode)</a> with string parsing support
(needed for values from <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html">ParameterizedFlagSyntax</a>
which stores values as strings like &ldquo;180&rdquo;).
Returns 0 if null or unparseable.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static double ParseDouble(this JsonNode node)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>node</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonnode">JsonNode</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_SoftNcUtil_RemoveFlagFromArray_" data-uid="Hi.NcParsers.SoftNcUtil.RemoveFlagFromArray*"></a>
<h3 id="Hi_NcParsers_SoftNcUtil_RemoveFlagFromArray_System_Text_Json_Nodes_JsonObject_System_String_" data-uid="Hi.NcParsers.SoftNcUtil.RemoveFlagFromArray(System.Text.Json.Nodes.JsonObject,System.String)">
RemoveFlagFromArray(JsonObject, string)
</h3>
<div class="markdown level1 summary"><p>Removes a specific flag string from the <code>Parsing.Flags</code> JsonArray.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void RemoveFlagFromArray(this JsonObject parsing, string flag)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>parsing</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a></dt>
<dd></dd>
<dt><code>flag</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_SoftNcUtil_SetAndTrimUnparsedText_" data-uid="Hi.NcParsers.SoftNcUtil.SetAndTrimUnparsedText*"></a>
<h3 id="Hi_NcParsers_SoftNcUtil_SetAndTrimUnparsedText_System_Text_Json_Nodes_JsonObject_System_String_" data-uid="Hi.NcParsers.SoftNcUtil.SetAndTrimUnparsedText(System.Text.Json.Nodes.JsonObject,System.String)">
@@ -414,7 +414,8 @@ G43.4 (TCPM) is Fanuc-specific — see <a class="xref" href="Hi.NcParsers.Syntax
</h3>
<div class="markdown level1 summary"><p>G68 Coordinate rotation syntax.</p>
<div class="markdown level1 summary"><p>G68 Coordinate rotation syntax.
X/Y/Z (center), I/J/K (axis), R (angle) stored as doubles.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -446,7 +447,10 @@ G43.4 (TCPM) is Fanuc-specific — see <a class="xref" href="Hi.NcParsers.Syntax
</h3>
<div class="markdown level1 summary"><p>G68.2 Tilted work plane syntax.</p>
<div class="markdown level1 summary"><p>G68.2 Tilted work plane syntax.
X/Y/Z (origin), I/J/K (euler angles) stored as doubles.
A/B/C post-processor hints are parsed by FloatTagSetupSyntax
and consumed by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html">IsoG68p2TiltSyntax</a> from Parsing.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -170,6 +170,18 @@ Class SyntaxPiece
<h2 id="Hi_NcParsers_Syntaxs_SyntaxPiece_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>The design pattern of <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_Sentence">Sentence</a> and <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject">JsonObject</a> are one-one mapping.</p>
<p><b>JSON value type convention:</b>
Prefer base types (double, int) over string for numeric values in <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject">JsonObject</a>.
This applies to both parsing syntaxes and logic syntaxes.
Strings should only be used when the value is genuinely textual
(e.g., macro variable references like "#1", "Q2", coordinate IDs like "G54")
or when the value cannot be parsed to a number.
Use <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.FloatTagSetupSyntax.html">FloatTagSetupSyntax</a>,
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.IntegerTagSetupSyntax.html">IntegerTagSetupSyntax</a>,
or <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_FloatParamPrefixes">FloatParamPrefixes</a>
/ <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html#Hi_NcParsers_ParsingSyntaxs_ParameterizedFlagSyntax_IntParamPrefixes">IntParamPrefixes</a>
to store typed values at parse time.
</p>
</div>
+3 -3
View File
@@ -655,6 +655,9 @@
<a href="Hi.Common.XmlUtils.html" name="" title="Hi.Common.XmlUtils">Hi.Common.XmlUtils</a>
<ul class="nav level2">
<li>
<a href="Hi.Common.XmlUtils.FileRefSource-1.html" name="" title="FileRefSource&lt;T&gt;">FileRefSource&lt;T&gt;</a>
</li>
<li>
<a href="Hi.Common.XmlUtils.GenMode.html" name="" title="GenMode">GenMode</a>
</li>
@@ -676,9 +679,6 @@
<li>
<a href="Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html" name="" title="XFactory.XmlExceptionDelegate">XFactory.XmlExceptionDelegate</a>
</li>
<li>
<a href="Hi.Common.XmlUtils.XmlSourceAndFile-1.html" name="" title="XmlSourceAndFile&lt;T&gt;">XmlSourceAndFile&lt;T&gt;</a>
</li>
<li>
<a href="Hi.Common.XmlUtils.XmlUtil.html" name="" title="XmlUtil">XmlUtil</a>
</li>
File diff suppressed because one or more lines are too long