Class TinyTree


  • public final class TinyTree
    extends java.lang.Object
    A data structure to hold the contents of a tree. As the name implies, this implementation of the data model is optimized for size, and for speed of creation: it minimizes the number of Java objects used.

    It can be used to represent a tree that is rooted at a document node, or one that is rooted at an element node.

    • Field Detail

      • documentNumber

        protected int documentNumber
      • numberOfNodes

        protected int numberOfNodes
      • nodeKind

        public byte[] nodeKind
      • depth

        protected short[] depth
      • next

        protected int[] next
      • alpha

        protected int[] alpha
      • beta

        protected int[] beta
      • nameCode

        protected int[] nameCode
      • prior

        protected int[] prior
      • typeCodeArray

        protected int[] typeCodeArray
      • numberOfAttributes

        protected int numberOfAttributes
      • attParent

        protected int[] attParent
      • attCode

        protected int[] attCode
      • attValue

        protected java.lang.CharSequence[] attValue
      • attTypeCode

        protected int[] attTypeCode
      • numberOfNamespaces

        protected int numberOfNamespaces
      • namespaceParent

        protected int[] namespaceParent
      • namespaceCode

        protected int[] namespaceCode
      • rootIndexUsed

        protected int rootIndexUsed
      • usesNamespaces

        protected boolean usesNamespaces
    • Constructor Detail

      • TinyTree

        public TinyTree()
        Create a TinyTree. The initial size is based on the average size of trees previously built in this session
      • TinyTree

        public TinyTree​(int nodes,
                        int attributes,
                        int namespaces,
                        int characters)
        Create a tree with a specified initial size
        Parameters:
        nodes - the expected number of (non attribute or namespace) nodes
        attributes - the expected number of attributes
        namespaces - the expected number of namespace declarations
        characters - the expected number of characters in the document (in text nodes)
    • Method Detail

      • setConfiguration

        public void setConfiguration​(Configuration config)
        Set the Configuration that contains this document
        Parameters:
        config - the Saxon configuration
      • getConfiguration

        public Configuration getConfiguration()
        Get the configuration previously set using setConfiguration
        Returns:
        the Saxon configuration
      • getNamePool

        public NamePool getNamePool()
        Get the name pool used for the names in this document
        Returns:
        the name pool
      • getTypeAnnotation

        public int getTypeAnnotation​(int nodeNr)
        Get the type annotation of a node. Applies only to document, element, text, processing instruction, and comment nodes.
        Parameters:
        nodeNr - the node whose type annotation is required
        Returns:
        the fingerprint of the type annotation for elements and attributes, otherwise undefined.
      • getNodeKind

        public int getNodeKind​(int nodeNr)
        Get the node kind of a given node, which must be a document, element, text, comment, or processing instruction node
        Parameters:
        nodeNr - the node number
        Returns:
        the node kind
      • getNameCode

        public int getNameCode​(int nodeNr)
        Get the nameCode for a given node, which must be a document, element, text, comment, or processing instruction node
        Parameters:
        nodeNr - the node number
        Returns:
        the name code
      • indexIDElement

        public void indexIDElement​(NodeInfo root,
                                   int nodeNr,
                                   NameChecker checker)
        Index an element of type xs:ID
        Parameters:
        root - the root node of the document
        nodeNr - the element of type xs:ID
        checker - checks names against XML 1.0 or XML 1.1 rules
      • getNode

        public final TinyNodeImpl getNode​(int nr)
        Get the node at a given position in the tree
        Parameters:
        nr - the node number
        Returns:
        the node at the given position
      • isIdAttribute

        public boolean isIdAttribute​(int nr)
        Determine whether an attribute is an IDREF/IDREFS attribute. (The represents the is-idref property in the data model)
        Parameters:
        nr - the node number of the attribute
        Returns:
        true if this is an IDREF/IDREFS attribute
      • isIdrefAttribute

        public boolean isIdrefAttribute​(int nr)
        Determine whether an attribute is an IDREF/IDREFS attribute. (The represents the is-idref property in the data model)
        Parameters:
        nr - the node number of the attribute
        Returns:
        true if this is an IDREF/IDREFS attribute
      • isIdrefElement

        public boolean isIdrefElement​(int nr)
        Ask whether an element is an IDREF/IDREFS element. (The represents the is-idref property in the data model)
        Parameters:
        nr - the element node whose is-idref property is required
        Returns:
        true if the node has the is-idref property
      • setLineNumbering

        public void setLineNumbering()
        Set line numbering on
      • getDocumentNumber

        public int getDocumentNumber()
        Get the document number (actually, the tree number)
        Returns:
        the unique number of this TinyTree structure
      • isNilled

        public boolean isNilled​(int nodeNr)
        Ask whether a given node is nilled
        Parameters:
        nodeNr - the node in question
        Returns:
        true if the node has the nilled property
      • diagnosticDump

        public void diagnosticDump()
        Produce diagnostic print of main tree arrays
      • diagnosticDump

        public static void diagnosticDump​(NodeInfo node)
        Create diagnostic dump of the tree containing a particular node. Designed to be called as an extension function for diagnostics.
        Parameters:
        node - the node in question
      • showSize

        public void showSize()
        Output a statistical summary to System.err
      • getNumberOfNodes

        public int getNumberOfNodes()
        Get the number of nodes in the tree, excluding attributes and namespace nodes
        Returns:
        the number of nodes.
      • getNumberOfAttributes

        public int getNumberOfAttributes()
        Get the number of attributes in the tree
        Returns:
        the number of attributes
      • getNumberOfNamespaces

        public int getNumberOfNamespaces()
        Get the number of namespace declarations in the tree
        Returns:
        the number of namespace declarations
      • getNodeKindArray

        public byte[] getNodeKindArray()
        Get the array holding node kind information
        Returns:
        an array of bytes, byte N is the node kind of node number N
      • getNodeDepthArray

        public short[] getNodeDepthArray()
        Get the array holding node depth information
        Returns:
        an array of shorts, byte N is the node depth of node number N
      • getNameCodeArray

        public int[] getNameCodeArray()
        Get the array holding node name information
        Returns:
        an array of integers, integer N is the name code of node number N
      • getTypeCodeArray

        public int[] getTypeCodeArray()
        Get the array holding node type information
        Returns:
        an array of integers, integer N is the type code of node number N
      • getNextPointerArray

        public int[] getNextPointerArray()
        Get the array holding next-sibling pointers
        Returns:
        an array of integers, integer N is the next-sibling pointer for node number N
      • getAlphaArray

        public int[] getAlphaArray()
        Get the array holding alpha information
        Returns:
        an array of integers, whose meaning depends on the node kind. For elements it is a pointer to the first attribute, for text, comment, and processing instruction nodes it is a pointer to the content
      • getBetaArray

        public int[] getBetaArray()
        Get the array holding beta information
        Returns:
        an array of integers, whose meaning depends on the node kind. For elements it is a pointer to the first namespace declaration
      • getCharacterBuffer

        public java.lang.CharSequence getCharacterBuffer()
        Get the character buffer used to hold all the text data of the document
        Returns:
        the character buffer
      • getCommentBuffer

        public java.lang.CharSequence getCommentBuffer()
        Get the character buffer used to hold all the comment data of the document
        Returns:
        the character buffer used for comments
      • getAttributeNameCodeArray

        public int[] getAttributeNameCodeArray()
        Get the array used to hold the name codes of all attributes
        Returns:
        an integer array; the Nth integer holds the attribute name code of attribute N
      • getAttributeTypeCodeArray

        public int[] getAttributeTypeCodeArray()
        Get the array used to hold the type codes of all attributes
        Returns:
        an integer array; the Nth integer holds the attribute type code of attribute N
      • getAttributeParentArray

        public int[] getAttributeParentArray()
        Get the array used to hold the parent pointers of all attributes
        Returns:
        an integer array; the Nth integer holds the pointer to the parent element of attribute N
      • getAttributeValueArray

        public java.lang.CharSequence[] getAttributeValueArray()
        Get the array used to hold the name codes of all attributes
        Returns:
        an array of strings; the Nth string holds the string value of attribute N
      • getNamespaceCodeArray

        public int[] getNamespaceCodeArray()
        Get the array used to hold the namespace codes of namespace declarations
        Returns:
        an array of integer namespace codes
      • getNamespaceParentArray

        public int[] getNamespaceParentArray()
        Get the array used to hold the parent pointers of all namespace declarations
        Returns:
        an integer array; the Nth integer holds the pointer to the parent element of namespace N