net.sf.saxon.tinytree

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 Summary

protected int[]
alpha
protected int[]
attCode
protected int[]
attParent
protected int[]
attTypeCode
protected CharSequence[]
attValue
protected int[]
beta
protected LargeStringBuffer
charBuffer
protected FastStringBuffer
commentBuffer
protected short[]
depth
protected int
documentNumber
protected int[]
nameCode
protected int[]
namespaceCode
protected int[]
namespaceParent
protected int[]
next
byte[]
nodeKind
protected int
numberOfAttributes
protected int
numberOfNamespaces
protected int
numberOfNodes
protected int[]
prior
protected int
rootIndexUsed
protected int[]
typeCodeArray
protected boolean
usesNamespaces

Constructor Summary

TinyTree()
Create a TinyTree.
TinyTree(int nodes, int attributes, int namespaces, int characters)
Create a tree with a specified initial size

Method Summary

void
diagnosticDump()
Produce diagnostic print of main tree arrays
static void
diagnosticDump(NodeInfo node)
Create diagnostic dump of the tree containing a particular node.
int[]
getAlphaArray()
Get the array holding alpha information
int[]
getAttributeNameCodeArray()
Get the array used to hold the name codes of all attributes
int[]
getAttributeParentArray()
Get the array used to hold the parent pointers of all attributes
int[]
getAttributeTypeCodeArray()
Get the array used to hold the type codes of all attributes
CharSequence[]
getAttributeValueArray()
Get the array used to hold the name codes of all attributes
int[]
getBetaArray()
Get the array holding beta information
CharSequence
getCharacterBuffer()
Get the character buffer used to hold all the text data of the document
CharSequence
getCommentBuffer()
Get the character buffer used to hold all the comment data of the document
Configuration
getConfiguration()
Get the configuration previously set using setConfiguration
int
getDocumentNumber()
Get the document number (actually, the tree number)
int
getNameCode(int nodeNr)
Get the nameCode for a given node, which must be a document, element, text, comment, or processing instruction node
int[]
getNameCodeArray()
Get the array holding node name information
NamePool
getNamePool()
Get the name pool used for the names in this document
int[]
getNamespaceCodeArray()
Get the array used to hold the namespace codes of namespace declarations
int[]
getNamespaceParentArray()
Get the array used to hold the parent pointers of all namespace declarations
int[]
getNextPointerArray()
Get the array holding next-sibling pointers
TinyNodeImpl
getNode(int nr)
Get the node at a given position in the tree
short[]
getNodeDepthArray()
Get the array holding node depth information
int
getNodeKind(int nodeNr)
Get the node kind of a given node, which must be a document, element, text, comment, or processing instruction node
byte[]
getNodeKindArray()
Get the array holding node kind information
int
getNumberOfAttributes()
Get the number of attributes in the tree
int
getNumberOfNamespaces()
Get the number of namespace declarations in the tree
int
getNumberOfNodes()
Get the number of nodes in the tree, excluding attributes and namespace nodes
int
getTypeAnnotation(int nodeNr)
Get the type annotation of a node.
int[]
getTypeCodeArray()
Get the array holding node type information
void
indexIDElement(NodeInfo root, int nodeNr, NameChecker checker)
Index an element of type xs:ID
boolean
isIdrefAttribute(int nr)
Determine whether an attribute is an IDREF/IDREFS attribute.
boolean
isIdrefElement(int nr)
Ask whether an element is an IDREF/IDREFS element.
boolean
isNilled(int nodeNr)
Ask whether a given node is nilled
void
setConfiguration(Configuration config)
Set the Configuration that contains this document
void
setLineNumbering()
Set line numbering on
void
showSize()
Output a statistical summary to System.err

Field Details

alpha

protected int[] alpha

attCode

protected int[] attCode

attParent

protected int[] attParent

attTypeCode

protected int[] attTypeCode

attValue

protected CharSequence[] attValue

beta

protected int[] beta

charBuffer

protected LargeStringBuffer charBuffer

commentBuffer

protected FastStringBuffer commentBuffer

depth

protected short[] depth

documentNumber

protected int documentNumber

nameCode

protected int[] nameCode

namespaceCode

protected int[] namespaceCode

namespaceParent

protected int[] namespaceParent

nodeKind

public byte[] nodeKind

numberOfAttributes

protected int numberOfAttributes

numberOfNamespaces

protected int numberOfNamespaces

numberOfNodes

protected int numberOfNodes

prior

protected int[] prior

rootIndexUsed

protected int rootIndexUsed

typeCodeArray

protected int[] typeCodeArray

usesNamespaces

protected boolean usesNamespaces

Constructor Details

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 Details

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

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

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

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

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

getAttributeValueArray

public 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

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 CharSequence getCharacterBuffer()
Get the character buffer used to hold all the text data of the document
Returns:
the character buffer

getCommentBuffer

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

getConfiguration

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

getDocumentNumber

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

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

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

getNamePool

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

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

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

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

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

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

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

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

getNumberOfNodes

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

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.

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

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

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

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

setConfiguration

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

setLineNumbering

public void setLineNumbering()
Set line numbering on

showSize

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