This is an automated email from the ASF dual-hosted git repository.

olabusayo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-daffodil-site.git


The following commit(s) were added to refs/heads/master by this push:
     new cb26eab  Update isHidden HLD
     new 7f437bb  Merge pull request #19 from olabusayoT/daffodil-2281-ishidden
cb26eab is described below

commit cb26eabe42362e22bfaf25c114d739432793e8aa
Author: olabusayoT <[email protected]>
AuthorDate: Mon Mar 9 12:30:57 2020 -0400

    Update isHidden HLD
    
    -- updated info about implement/decrement logic location
    -- added "info hidden" documentation
    -- removed transition plan
    -- additional test info
    
    DAFFODIL-2281
---
 site/debugger.md                         |  4 ++++
 site/dev/design-notes/hidden-groups.adoc | 25 ++++---------------------
 2 files changed, 8 insertions(+), 21 deletions(-)

diff --git a/site/debugger.md b/site/debugger.md
index cc27c88..aaccc69 100644
--- a/site/debugger.md
+++ b/site/debugger.md
@@ -172,6 +172,10 @@ Enabling the debugger displays a ``(debug)`` prompt, at 
which point various comm
 
      : Display the current group index. Abbreviation: ``gi``
 
+     ``hidden``
+
+     : Display whether or not we're within the nesting context of a hidden 
group. Abbreviation: ``h``
+
      ``infoset``
 
      : Display the current infoset. Abbreviation: ``i``
diff --git a/site/dev/design-notes/hidden-groups.adoc 
b/site/dev/design-notes/hidden-groups.adoc
index e8f03d4..a9b48f4 100644
--- a/site/dev/design-notes/hidden-groups.adoc
+++ b/site/dev/design-notes/hidden-groups.adoc
@@ -49,9 +49,9 @@ Hence, no static analysis of whether a term is 
always/sometimes/never hidden is
 The implementation takes advantage of the processor (parser/unparser) 
traversal of the DFDL schema components following an in-order traversal 
pattern, so that a stack-discpline can be used when traversing hidden-group 
references. No actual stack is needed, only a counter. 
 The details are:
 
-* The PState/UState contains a counter (initial value 0) of the number of 
hidden group references currently in the nest.  
+* The PState/UState contains a hiddenDepth counter (initial value 0) that 
represents the number of hidden group references currently in the nest.
 * When parsing/unparsing a hidden group ref, this counter is incremented. 
-When unwinding from that unparse, the counter is decremented.  
+When unwinding from that parse/unparse, the counter is decremented.
 No action is required for non-hidden group references.
 * When an infoset element is created, the setHidden() method is called if the 
counter is non-zero. 
 * At the end of processing, the counter should be zero. 
@@ -62,10 +62,7 @@ In Daffodil's "Runtime 1" backend, these are the runtime 
data structure features
 
 * Infoset elements have an isHidden() boolean method, and a setHidden() setter.
 * The PState/UState contains the counter described above.
-* The ModelGroupRuntimeData object contains an isHidden flag that is true if 
the term corresponds to a hidden group reference. 
-It is this flag that is inspected to determine if the PState/UState counter 
should be incremented/decremented or not.
-* The increment/decrement logic is centralized in Parser.parse1() method and 
Unparser.unparse1() method.
-These inspect the current TermRuntimeData object, and when it is a 
ModelGroupRuntimeData, they check the isHidden flag. 
+* The increment/decrement logic is centralized in a 
HiddenGroupCombinatorParser/Unparser. This is wrapped around the gram in the 
ModelGroupGrammarMixin trait, if the gram is a hidden group ref.
 * At the end of processing where checking that the various runtime-stacks and 
pools are properly emptied/restored, an additional check is done to insure the 
hidden counter of the PState/UState has been returned to zero. 
 This check need only be performed on normal exits. If the processor terminates 
abnormally, we needn't check. 
 * The debugger/trace should display, as part of the state, whether the current 
context isHidden (counter > 0) or not. 
@@ -78,18 +75,4 @@ This check need only be performed on normal exits. If the 
processor terminates a
 * Tests cover where the same group definition is used both hidden and 
non-hidden within the same schema. 
 * Tests cover this for hidden sequences and hidden choices. 
 Note that a hidden group references always uses an xs:sequence element, but 
the referenced group can be a choice group definition.
-
-
-== Transition Plan From Daffodil 2.5.0
-
-(Delete this section once implementation is complete.)
-
-The existing v2.5.0 isHidden implementation consists of code that populates a 
member of class ElementRuntimeData (Runtime 1) isHidden member. 
-
-All code for populating that member, and the member itself, can be removed. 
Anything it calls which is used only for that purpose can be removed. 
-
-Any code that assumes the isHidden characteristic of elements is static 
information must be removed.
-
-All access to whether an element isHidden must call the isHidden method of 
InfosetElement (aka DIElement) object instead of on the ERD 
(ElementRuntimeData) object. 
-
-There is no conversion of existing code to a new design, as the entire old 
mechanism, and its underlying assumptions, are being removed, and fully 
replaced by the new mechanism. 
+* Tests cover the cases of nested hidden group refs

Reply via email to