public final class TinyTree
extends java.lang.Object
It can be used to represent a tree that is rooted at a document node, or one that is rooted at an element node.
Modifier and Type | Field | Description |
---|---|---|
protected int[] |
alpha |
|
protected int[] |
attCode |
|
protected int[] |
attParent |
|
protected int[] |
attTypeCode |
|
protected Value<? extends AtomicValue>[] |
attTypedValue |
|
protected java.lang.CharSequence[] |
attValue |
|
protected int[] |
beta |
|
protected AppendableCharSequence |
charBuffer |
|
protected FastStringBuffer |
commentBuffer |
|
protected short[] |
depth |
|
protected long |
documentNumber |
|
protected int[] |
nameCode |
|
protected NamespaceBinding[] |
namespaceBinding |
|
protected int[] |
namespaceParent |
|
protected int[] |
next |
|
byte[] |
nodeKind |
|
protected int |
numberOfAttributes |
|
protected int |
numberOfNamespaces |
|
protected int |
numberOfNodes |
|
protected int[] |
prior |
|
protected int |
rootIndexUsed |
|
static int |
TYPECODE_IDREF |
|
protected int[] |
typeCodeArray |
|
protected Value<? extends AtomicValue>[] |
typedValueArray |
|
protected boolean |
usesNamespaces |
Constructor | Description |
---|---|
TinyTree(Configuration config) |
Create a TinyTree.
|
TinyTree(Configuration config,
int nodes,
int attributes,
int namespaces,
int characters) |
Create a tree with a specified initial size
|
Modifier and Type | Method | Description |
---|---|---|
(package private) void |
addAttribute(NodeInfo root,
int parent,
int nameCode,
int typeCode,
java.lang.CharSequence attValue,
int properties) |
Add an attribute node to the tree
|
(package private) int |
addDocumentNode(TinyDocumentImpl doc) |
Add a document node to the tree.
|
(package private) void |
addNamespace(int parent,
NamespaceBinding binding) |
Add a namespace node to the current element
|
(package private) int |
addNode(short kind,
int depth,
int alpha,
int beta,
int nameCode) |
Add a node to the tree
|
int |
addTextNodeCopy(int depth,
int existingNodeNr) |
Create a new text node that is a copy of an existing text node
|
(package private) void |
appendChars(java.lang.CharSequence chars) |
Append character data to the current text node
|
(package private) void |
condense() |
Condense the tree: release unused memory.
|
void |
diagnosticDump() |
Produce diagnostic print of main tree arrays
|
static void |
diagnosticDump(NodeInfo node) |
Create diagnostic dump of the tree containing a particular node.
|
(package private) void |
ensurePriorIndex() |
On demand, make an index for quick access to preceding-sibling nodes
|
int[] |
getAlphaArray() |
Get the array holding alpha information
|
(package private) AtomicValue |
getAtomizedValueOfUntypedNode(int nodeNr) |
Get the typed value of a node whose type is known to be untypedAtomic.
|
(package private) int |
getAttributeAnnotation(int nr) |
Get the type annotation of an attribute node.
|
int[] |
getAttributeNameCodeArray() |
Get the array used to hold the name codes of all attributes
|
(package private) TinyAttributeImpl |
getAttributeNode(int nr) |
Make a (transient) attribute node from the array of 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
|
java.lang.CharSequence[] |
getAttributeValueArray() |
Get the array used to hold the name codes of all attributes
|
int[] |
getBetaArray() |
Get the array holding beta information
|
AppendableCharSequence |
getCharacterBuffer() |
Get the character buffer used to hold all the text data of the document
|
(package private) int |
getColumnNumber(int sequence) |
Get the column number for a node.
|
java.lang.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
|
long |
getDocumentNumber() |
Get the document number (actually, the tree number)
|
int |
getLineNumber(int sequence) |
Get the line number for a node.
|
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
|
NamespaceBinding[] |
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
|
(package private) int |
getRootNode(int nodeNr) |
Get the root node for a given node
|
java.lang.String |
getSystemId(int seq) |
Get the system id of an element in the document
|
int |
getTypeAnnotation(int nodeNr) |
Get the type annotation of a node.
|
int[] |
getTypeCodeArray() |
Get the array holding node type information
|
Value<? extends AtomicValue> |
getTypedValueOfAttribute(TinyAttributeImpl att,
int nodeNr) |
Get the typed value of an attribute node.
|
Value |
getTypedValueOfElement(int nodeNr) |
Get the type value of an element node, given only the node number
|
Value<? extends AtomicValue> |
getTypedValueOfElement(TinyElementImpl element) |
Get the typed value of an element node.
|
void |
indexIDElement(NodeInfo root,
int nodeNr,
NameChecker checker) |
Index an element of type xs:ID
|
boolean |
isIdAttribute(int nr) |
Determine whether an attribute is an IDREF/IDREFS attribute.
|
boolean |
isIdElement(int nr) |
Ask whether an element is an ID element.
|
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
|
(package private) void |
setElementAnnotation(int nodeNr,
int typeCode) |
Set the type annotation of an element node
|
(package private) void |
setLineNumber(int sequence,
int line,
int column) |
Set the line number for a node.
|
void |
setLineNumbering() |
Set line numbering on
|
(package private) void |
setSystemId(int seq,
java.lang.String uri) |
Set the system id of an element in the document.
|
void |
showSize() |
Output a statistical summary to System.err
|
protected long documentNumber
protected AppendableCharSequence charBuffer
protected FastStringBuffer commentBuffer
protected int numberOfNodes
public byte[] nodeKind
protected short[] depth
protected int[] next
protected int[] alpha
protected int[] beta
protected int[] nameCode
protected int[] prior
protected int[] typeCodeArray
protected Value<? extends AtomicValue>[] typedValueArray
public static final int TYPECODE_IDREF
protected int numberOfAttributes
protected int[] attParent
protected int[] attCode
protected java.lang.CharSequence[] attValue
protected Value<? extends AtomicValue>[] attTypedValue
protected int[] attTypeCode
protected int numberOfNamespaces
protected int[] namespaceParent
protected NamespaceBinding[] namespaceBinding
protected int rootIndexUsed
protected boolean usesNamespaces
public TinyTree(Configuration config)
config
- the Saxon Configurationpublic TinyTree(Configuration config, int nodes, int attributes, int namespaces, int characters)
config
- the Saxon configurationnodes
- the expected number of (non attribute or namespace) nodesattributes
- the expected number of attributesnamespaces
- the expected number of namespace declarationscharacters
- the expected number of characters in the document (in text nodes)public void setConfiguration(Configuration config)
config
- the Saxon configurationpublic Configuration getConfiguration()
public NamePool getNamePool()
int addDocumentNode(TinyDocumentImpl doc)
doc
- the document node to be addedint addNode(short kind, int depth, int alpha, int beta, int nameCode)
kind
- The kind of the node. This must be a document, element, text, comment,
or processing-instruction node (not an attribute or namespace)depth
- The depth in the treealpha
- Pointer to attributes or textbeta
- Pointer to namespaces or textnameCode
- The name of the nodevoid appendChars(java.lang.CharSequence chars)
chars
- the character data to be appendedpublic int addTextNodeCopy(int depth, int existingNodeNr)
depth
- the depth of the new nodeexistingNodeNr
- the node to be copiedvoid condense()
void setElementAnnotation(int nodeNr, int typeCode)
nodeNr
- the node whose type annotation is to be settypeCode
- the type annotationpublic int getTypeAnnotation(int nodeNr)
nodeNr
- the node whose type annotation is requiredpublic Value<? extends AtomicValue> getTypedValueOfElement(TinyElementImpl element) throws XPathException
element
- the element nodeXPathException
- if a dynamic error occurs, for example if the node is
an element annotated with a type that has element-only contentpublic Value getTypedValueOfElement(int nodeNr) throws XPathException
nodeNr
- the node number of the element nodeXPathException
- if the eement has no typed valuepublic Value<? extends AtomicValue> getTypedValueOfAttribute(TinyAttributeImpl att, int nodeNr) throws XPathException
att
- the attribute node if available. If null is supplied, the attribute node
will be materialized only if it is needed.nodeNr
- the node number of the attribute nodeXPathException
- if an error is foundpublic int getNodeKind(int nodeNr)
nodeNr
- the node numberpublic int getNameCode(int nodeNr)
nodeNr
- the node numbervoid ensurePriorIndex()
void addAttribute(NodeInfo root, int parent, int nameCode, int typeCode, java.lang.CharSequence attValue, int properties)
root
- the root of the tree to contain the attributeparent
- the parent element of the new attributenameCode
- the name code of the attributetypeCode
- the type annotation of the attributeattValue
- the string value of the attributeproperties
- any special properties of the attribute (bit-significant)public void indexIDElement(NodeInfo root, int nodeNr, NameChecker checker)
root
- the root node of the documentnodeNr
- the element of type xs:IDchecker
- checks names against XML 1.0 or XML 1.1 rulesvoid addNamespace(int parent, NamespaceBinding binding)
parent
- the node number of the elementbinding
- namespace identifying the prefix and uripublic final TinyNodeImpl getNode(int nr)
nr
- the node numberAtomicValue getAtomizedValueOfUntypedNode(int nodeNr)
nodeNr
- the node whose typed value is requiredTinyAttributeImpl getAttributeNode(int nr)
nr
- the node number of the attributeint getAttributeAnnotation(int nr)
nr
- the node number of the attributepublic boolean isIdAttribute(int nr)
nr
- the node number of the attributepublic boolean isIdrefAttribute(int nr)
nr
- the node number of the attributepublic boolean isIdElement(int nr)
nr
- the element node whose is-idref property is requiredpublic boolean isIdrefElement(int nr)
nr
- the element node whose is-idref property is requiredvoid setSystemId(int seq, java.lang.String uri)
seq
- the node numberuri
- the system IDpublic java.lang.String getSystemId(int seq)
seq
- the node number of the element nodeint getRootNode(int nodeNr)
nodeNr
- the node number of the given nodepublic void setLineNumbering()
void setLineNumber(int sequence, int line, int column)
sequence
- the node numberline
- the line number to be set for the nodecolumn
- the column number for the nodepublic int getLineNumber(int sequence)
sequence
- the node numberint getColumnNumber(int sequence)
sequence
- the node numberpublic long getDocumentNumber()
public boolean isNilled(int nodeNr)
nodeNr
- the node in question (which must be an element node)public void diagnosticDump()
public static void diagnosticDump(NodeInfo node)
node
- the node in questionpublic void showSize()
public int getNumberOfNodes()
public int getNumberOfAttributes()
public int getNumberOfNamespaces()
public byte[] getNodeKindArray()
public short[] getNodeDepthArray()
public int[] getNameCodeArray()
public int[] getTypeCodeArray()
public int[] getNextPointerArray()
public int[] getAlphaArray()
public int[] getBetaArray()
public AppendableCharSequence getCharacterBuffer()
public java.lang.CharSequence getCommentBuffer()
public int[] getAttributeNameCodeArray()
public int[] getAttributeTypeCodeArray()
public int[] getAttributeParentArray()
public java.lang.CharSequence[] getAttributeValueArray()
public NamespaceBinding[] getNamespaceCodeArray()
public int[] getNamespaceParentArray()