net.sf.saxon.tinytree
Class TinyTreeEventIterator

java.lang.Object
  extended by net.sf.saxon.tinytree.TinyTreeEventIterator
All Implemented Interfaces:
LocationProvider, EventIterator, PullEvent

public class TinyTreeEventIterator
extends Object
implements EventIterator, LocationProvider

This implementation of the Saxon event-pull interface starts from a document, element, text, comment, or processing-instruction node in a TinyTree, and returns the events corresponding to that node and its descendants (including their attributes and namespaces). The class performs the same function as the general-purpose Decomposer class, but is specialized to exploit the TinyTree data structure: in particular, it never materializes any Node objects.


Constructor Summary
TinyTreeEventIterator(TinyNodeImpl startNode, PipelineConfiguration pipe)
          Create a TinyTreeEventIterator to return events associated with a tree or subtree
 
Method Summary
 int getColumnNumber(long locationId)
          Get location information: the column number of the current start element event
 int getLineNumber(long locationId)
          Get location information: the line number of the current start element event
 String getSystemId(long locationId)
          Get location information: the system Id of the current start element event
 boolean isFlatSequence()
          Determine whether the EventIterator returns a flat sequence of events, or whether it can return nested event iterators
 PullEvent next()
          Get the next event
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TinyTreeEventIterator

public TinyTreeEventIterator(TinyNodeImpl startNode,
                             PipelineConfiguration pipe)
Create a TinyTreeEventIterator to return events associated with a tree or subtree

Parameters:
startNode - the root of the tree or subtree. Must be a document or element node.
pipe - the Saxon pipeline configuration
Throws:
IllegalArgumentException - if the start node is an attribute or namespace node.
Method Detail

next

public PullEvent next()
               throws XPathException
Get the next event

Specified by:
next in interface EventIterator
Returns:
a PullEvent object representing the next event, or null when the sequence is exhausted
Throws:
XPathException - if a dynamic evaluation error occurs

isFlatSequence

public boolean isFlatSequence()
Determine whether the EventIterator returns a flat sequence of events, or whether it can return nested event iterators

Specified by:
isFlatSequence in interface EventIterator
Returns:
true if the next() method is guaranteed never to return an EventIterator

getSystemId

public String getSystemId(long locationId)
Get location information: the system Id of the current start element event

Specified by:
getSystemId in interface LocationProvider
Parameters:
locationId - in this case, the node number in the tiny tree
Returns:
the system Id of the node: that is its base URI, before taking xml:base into account

getLineNumber

public int getLineNumber(long locationId)
Get location information: the line number of the current start element event

Specified by:
getLineNumber in interface LocationProvider
Parameters:
locationId - in this case, the node number in the tiny tree
Returns:
the line number of the node if known, or -1 otherwise

getColumnNumber

public int getColumnNumber(long locationId)
Get location information: the column number of the current start element event

Specified by:
getColumnNumber in interface LocationProvider
Parameters:
locationId - in this case, the node number in the tiny tree
Returns:
the column number of the node if known, or -1 otherwise


Copyright (c) Saxonica Limited. All rights reserved.