Archived
deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.
This commit is contained in:
@@ -238,6 +238,40 @@ to store typed values at parse time.
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_SyntaxPiece_IsFrozen_" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.IsFrozen*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_SyntaxPiece_IsFrozen" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.IsFrozen">
|
||||
IsFrozen
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>True when the parse result is held as a frozen UTF-8 snapshot instead
|
||||
of a live <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a> graph — see
|
||||
<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_Freeze">Freeze()</a>.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public bool IsFrozen { 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.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject_" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.JsonObject*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.JsonObject">
|
||||
@@ -246,6 +280,19 @@ to store typed values at parse time.
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Structured parse result built by syntax passes.</p>
|
||||
<p>
|
||||
While the piece is live (the default), this is the one mutable
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a> every pipeline stage
|
||||
reads and writes. After <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_Freeze">Freeze()</a>, the getter re-parses the
|
||||
frozen UTF-8 snapshot and returns a FRESH object on every call — treat
|
||||
it as a read-only snapshot: mutations land on the transient copy and
|
||||
are lost, and two calls return different object references. All
|
||||
mutating consumers run before the freeze boundary (see
|
||||
<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_Freeze">Freeze()</a>), so downstream readers (NC optimization,
|
||||
writeback composition, GUI JSON panels) see identical content either
|
||||
way. Setting this property replaces the live object and discards any
|
||||
frozen snapshot.
|
||||
</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
@@ -309,14 +356,27 @@ to store typed values at parse time.
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>0-based ordinal in NC execution order. Stamped at piece construction
|
||||
time by <a class="xref" href="Hi.NcParsers.Segmenters.ISegmenter.html">GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken)</a> from the destination
|
||||
<code>layers[0]</code>'s running count, so subprogram pieces inlined by
|
||||
<code>SubProgramCallSyntax</code> get sequential indices that interleave
|
||||
correctly between host blocks. Useful as a cross-process alignment
|
||||
key (messages, ClStripPos, MachiningStep) — unlike
|
||||
<code>FileLineUtil.MixedIndex()</code>, it reflects execution order rather
|
||||
than (FileIndex, LineIndex) source order.</p>
|
||||
<div class="markdown level1 summary"><p>0-based, session-globally unique ordinal in NC execution order.
|
||||
Stamped at piece construction time by
|
||||
<a class="xref" href="Hi.NcParsers.Segmenters.ISegmenter.html">GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken)</a> from the session's
|
||||
<a class="xref" href="Hi.NcParsers.Dependencys.SystemWired.SentenceIndexCounterDependency.html">SentenceIndexCounterDependency</a>:
|
||||
each piece allocates the next counter value as the lazy pipeline
|
||||
materializes it, so values are strictly increasing along the executed
|
||||
stream — subprogram / macro bodies inlined by
|
||||
<code>SubProgramCallSyntax</code> and friends interleave correctly between
|
||||
host blocks, including nested calls. Useful as a cross-process
|
||||
alignment key (messages, ClStripPos, MachiningStep) — unlike the
|
||||
<code>(FileIndex, LineIndex)</code> source order, it reflects execution order.</p>
|
||||
<p>
|
||||
Values are NOT contiguous per file: eager label scans
|
||||
(<code>LabelScanUtil</code> / <code>RewindToLine</code>) number the whole
|
||||
re-segmented file and discard the pre-label prefix, leaving gaps.
|
||||
Never negative — <code>-1</code> stays reserved as the "not in pipeline"
|
||||
sentinel on downstream carriers. When the counter dependency is
|
||||
absent (legacy XML preset), numbering falls back to the caller's
|
||||
contiguous begin-index sequence, which can double-book across
|
||||
inline boundaries.
|
||||
</p>
|
||||
<p>
|
||||
Required at construction: the index is identity, not optional metadata.
|
||||
Read-only after construction; the pipeline guarantees one stamping per
|
||||
@@ -350,6 +410,49 @@ piece at the wrapping chokepoint.
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_SyntaxPiece_Freeze_" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.Freeze*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_SyntaxPiece_Freeze" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.Freeze">
|
||||
Freeze()
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Replaces the live <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject">JsonObject</a> graph with its compact
|
||||
UTF-8 serialization (~13× smaller live-memory footprint per retained
|
||||
piece), keeping the piece readable through the <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject">JsonObject</a>
|
||||
getter via on-demand re-parse. Uses
|
||||
<a class="xref" href="Hi.Common.JsonUtil.html#Hi_Common_JsonUtil_CompactNanOptions">CompactNanOptions</a> — the exact leaf encoding of
|
||||
<a class="xref" href="Hi.Common.JsonUtil.html#Hi_Common_JsonUtil_ToLeafCompactJsonString_System_Text_Json_Nodes_JsonNode_System_Text_Json_JsonSerializerOptions_">ToLeafCompactJsonString(JsonNode, JsonSerializerOptions)</a> — so the JSON projection
|
||||
of a frozen piece is byte-identical to the live one (NaN / Infinity
|
||||
serialize as quoted literal strings; explicit nulls survive).</p>
|
||||
<p>
|
||||
Call only after every mutating consumer of this piece has run — the
|
||||
session pipeline freezes a piece once it left the executing window
|
||||
(its semantics completed plus a lag margin; see
|
||||
<code>MachiningProcs.NcRunnerSessionState</code>). Idempotent; a piece with a
|
||||
null <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece_JsonObject">JsonObject</a> stays null. Thread-safe against
|
||||
concurrent readers: they observe either the live graph or the frozen
|
||||
snapshot, never a torn state.
|
||||
</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public void Freeze()</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_SyntaxPiece_GetSentence_" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.GetSentence*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_SyntaxPiece_GetSentence" data-uid="Hi.NcParsers.Syntaxs.SyntaxPiece.GetSentence">
|
||||
|
||||
Reference in New Issue
Block a user