org.apache.xalan.xsltc.compiler
Class Step

java.lang.Object
  extended by org.apache.xalan.xsltc.compiler.SyntaxTreeNode
      extended by org.apache.xalan.xsltc.compiler.Expression
          extended by org.apache.xalan.xsltc.compiler.RelativeLocationPath
              extended by org.apache.xalan.xsltc.compiler.Step
All Implemented Interfaces:
Constants

final class Step
extends RelativeLocationPath


Field Summary
private  int _axis
          This step's axis as defined in class Axis.
private  boolean _hadPredicates
          Some simple predicates can be handled by this class (and not by the Predicate class) and will be removed from the above vector as they are handled.
private  int _nodeType
          Type of the node test.
private  java.util.Vector _predicates
          A vector of predicates (filters) defined on this step - may be null
 
Fields inherited from class org.apache.xalan.xsltc.compiler.Expression
_falseList, _trueList, _type
 
Fields inherited from class org.apache.xalan.xsltc.compiler.SyntaxTreeNode
_attributes, _parent, _qname, Dummy, IndentIncrement, UNKNOWN_STYLESHEET_NODE_ID
 
Fields inherited from interface org.apache.xalan.xsltc.compiler.Constants
ABSOLUTE_ITERATOR, ACC_FINAL, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ADD_ATTRIBUTE, ADD_ATTRIBUTE_SIG, ADD_ITERATOR, ADD_ITERATOR_SIG, ADD_PARAMETER, ADD_PARAMETER_SIG, APPLY_TEMPLATES, ATTR_SET_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTRIBUTES_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CHARACTERS, CHARACTERS_SIG, CHARACTERSW, CHARACTERSW_SIG, CLEAR_ATTRIBUTES, CLEAR_ATTRIBUTES_SIG, COLLATOR_CLASS, COLLATOR_SIG, COMPILER_PACKAGE, CURRENT_NODE_LIST_FILTER, CURRENT_NODE_LIST_FILTER_SIG, CURRENT_NODE_LIST_ITERATOR, CURRENT_NODE_LIST_ITERATOR_SIG, DEFAULT_NODE_COUNTER, DEFAULT_NODE_COUNTER_SIG, DOCUMENT_PNAME, DOM_ADAPTER_CLASS, DOM_ADAPTER_SIG, DOM_FIELD, DOM_IMPL, DOM_IMPL_CLASS, DOM_IMPL_SIG, DOM_INTF, DOM_INTF_SIG, DOM_PNAME, DOUBLE_CLASS, DOUBLE_SIG, DOUBLE_VALUE, DOUBLE_VALUE_SIG, DUP_FILTERED_ITERATOR, EMPTYATTR_FIELD, EMPTYSTRING, ERROR, EXPAND_STYLESHEET_QNAME_REF, EXPAND_STYLESHEET_QNAME_SIG, FALLBACK_CLASS, FATAL, FILTER_INTERFACE, FILTER_INTERFACE_SIG, FILTER_ITERATOR, FILTER_STEP_ITERATOR, FORMAT_SYMBOLS_FIELD, GET_ATTRIBUTE_VALUE, GET_ATTRIBUTE_VALUE_SIG, GET_CHILDREN, GET_CHILDREN_SIG, GET_ELEMENT_VALUE, GET_ELEMENT_VALUE_SIG, GET_ITERATOR_SIG, GET_NODE_NAME, GET_NODE_NAME_SIG, GET_NODE_TYPE, GET_NODE_TYPE_SIG, GET_NODE_VALUE, GET_NODE_VALUE_ITERATOR, GET_NODE_VALUE_ITERATOR_SIG, GET_NODE_VALUE_SIG, GET_PARAMETER, GET_PARAMETER_SIG, GET_PARENT, GET_PARENT_SIG, GET_TYPED_CHILDREN, GET_TYPED_CHILDREN_SIG, GET_UNPARSED_ENTITY_URI, GET_UNPARSED_ENTITY_URI_SIG, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, INT_VALUE, INT_VALUE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_ITERATOR_SIG, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_SIG, LOOKUP_STYLESHEET_QNAME_NS_REF, LOOKUP_STYLESHEET_QNAME_NS_SIG, MAKE_NODE, MAKE_NODE_LIST, MAKE_NODE_LIST_SIG, MAKE_NODE_LIST_SIG2, MAKE_NODE_SIG, MAKE_NODE_SIG2, MATCHING_ITERATOR, MATH_CLASS, MULTI_DOM_CLASS, MULTI_DOM_SIG, NAMES_INDEX, NAMES_INDEX_SIG, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NEXT, NEXT_SIG, NEXTID, NODE, NODE_COUNTER, NODE_COUNTER_SIG, NODE_FIELD, NODE_FIELD_SIG, NODE_ITERATOR, NODE_ITERATOR_BASE, NODE_ITERATOR_SIG, NODE_PNAME, NODE_SIG, NODE_SORT_FACTORY, NODE_SORT_FACTORY_SIG, NODE_SORT_RECORD, NODE_SORT_RECORD_SIG, NS_ANCESTORS_INDEX_SIG, NTH_ITERATOR_CLASS, OBJECT_CLASS, OBJECT_SIG, ORDER_ITERATOR, ORDER_ITERATOR_SIG, OUTPUT_BASE, OUTPUT_HANDLER, OUTPUT_HANDLER_SIG, POP_PARAM_FRAME, POP_PARAM_FRAME_SIG, POSITION_INDEX, PREFIX_URIS_ARRAY_SIG, PREFIX_URIS_IDX_SIG, PUSH_PARAM_FRAME, PUSH_PARAM_FRAME_SIG, REDIRECT_URI, RESET, RESET_SIG, RTF_INITIAL_SIZE, RUNTIME_NODE_CLASS, RUNTIME_PACKAGE, SAX_IMPL, SAX_IMPL_CLASS, SAX_IMPL_SIG, SET_START_NODE, SET_START_NODE_SIG, SINGLETON_ITERATOR, SORT_ITERATOR, SORT_ITERATOR_SIG, STATIC_CHAR_DATA_FIELD, STATIC_CHAR_DATA_FIELD_SIG, STATIC_NAMES_ARRAY_FIELD, STATIC_NAMESPACE_ARRAY_FIELD, STATIC_NS_ANCESTORS_ARRAY_FIELD, STATIC_PREFIX_URIS_ARRAY_FIELD, STATIC_PREFIX_URIS_IDX_ARRAY_FIELD, STATIC_TYPES_ARRAY_FIELD, STATIC_URIS_ARRAY_FIELD, STEP_ITERATOR_CLASS, STREAM_XML_OUTPUT, STRING, STRING_BUFFER_CLASS, STRING_BUFFER_SIG, STRING_CLASS, STRING_SIG, STRING_TO_INT, STRING_TO_INT_SIG, STRING_TO_REAL, STRING_TO_REAL_SIG, STRING_VALUE_HANDLER, STRING_VALUE_HANDLER_SIG, STRING_WRITER, STRIP_SPACE, STRIP_SPACE_INTF, STRIP_SPACE_PARAMS, STRIP_SPACE_SIG, TRANSLET_CLASS, TRANSLET_FIELD, TRANSLET_FIELD_SIG, TRANSLET_INTF, TRANSLET_INTF_SIG, TRANSLET_OUTPUT_BASE, TRANSLET_OUTPUT_INTERFACE, TRANSLET_OUTPUT_PNAME, TRANSLET_OUTPUT_SIG, TRANSLET_PNAME, TRANSLET_SIG, TRANSLET_URI, TRANSLET_VERSION_INDEX, TRANSLET_VERSION_INDEX_SIG, TYPES_INDEX, TYPES_INDEX_SIG, UNION_ITERATOR_CLASS, UNION_ITERATOR_SIG, UNSUPPORTED, URIS_INDEX, URIS_INDEX_SIG, WARNING, WRITER_SIG, XHTML_URI, XMLNS_PREFIX, XMLNS_STRING, XMLNS_URI, XSLT_PACKAGE, XSLT_URI
 
Constructor Summary
Step(int axis, int nodeType, java.util.Vector predicates)
           
 
Method Summary
 void addPredicates(java.util.Vector predicates)
          Returns the vector containing all predicates for this step.
 int getAxis()
          Define the axis (defined in Axis class) for this step
 int getNodeType()
          Returns the node-type for this step
 java.util.Vector getPredicates()
          Returns the vector containing all predicates for this step.
private  boolean hasParentPattern()
          Returns 'true' if this step has a parent pattern.
private  boolean hasPredicates()
          Returns 'true' if this step has any predicates
 boolean isAbbreviatedDDot()
          True if this step is the abbreviated step '..'
 boolean isAbbreviatedDot()
          True if this step is the abbreviated step '.'
private  boolean isPredicate()
          Returns 'true' if this step is used within a predicate
 void setAxis(int axis)
          Get the axis (defined in Axis class) for this step
 void setParser(Parser parser)
          Set the parser for this element and all child predicates
 java.lang.String toString()
          Returns a string representation of this step.
 void translate(ClassGenerator classGen, MethodGenerator methodGen)
          Translate a step by pushing the appropriate iterator onto the stack.
 void translatePredicates(ClassGenerator classGen, MethodGenerator methodGen)
          Translate a sequence of predicates.
 Type typeCheck(SymbolTable stable)
          Type check this step.
 
Methods inherited from class org.apache.xalan.xsltc.compiler.Expression
backPatchFalseList, backPatchTrueList, compile, desynthesize, evaluateAtCompileTime, getFalseList, getTrueList, getType, hasLastCall, hasPositionCall, lookupPrimop, startIterator, synthesize, translateDesynthesized
 
Methods inherited from class org.apache.xalan.xsltc.compiler.SyntaxTreeNode
addAttribute, addElement, addPrefixMapping, compileResultTree, contextDependent, dependentContents, display, displayContents, elementAt, elementCount, elements, getAttribute, getAttribute, getAttributes, getContents, getImportPrecedence, getLineNumber, getNodeIDForStylesheetNSLookup, getParent, getParser, getPrefixMapping, getQName, getStylesheet, getSymbolTable, getTemplate, getXSLTC, hasAttribute, hasContents, indent, isDummy, lastChild, lookupNamespace, lookupPrefix, parseChildren, parseContents, removeElement, reportError, reportWarning, setAttributes, setFirstElement, setLineNumber, setParent, setPrefixMapping, setQName, setQName, translateContents, typeCheckContents, updateScope
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_axis

private int _axis
This step's axis as defined in class Axis.


_predicates

private java.util.Vector _predicates
A vector of predicates (filters) defined on this step - may be null


_hadPredicates

private boolean _hadPredicates
Some simple predicates can be handled by this class (and not by the Predicate class) and will be removed from the above vector as they are handled. We use this boolean to remember if we did have any predicates.


_nodeType

private int _nodeType
Type of the node test.

Constructor Detail

Step

public Step(int axis,
            int nodeType,
            java.util.Vector predicates)
Method Detail

setParser

public void setParser(Parser parser)
Set the parser for this element and all child predicates

Overrides:
setParser in class SyntaxTreeNode
Parameters:
parser - The XSLT parser.

getAxis

public int getAxis()
Define the axis (defined in Axis class) for this step

Specified by:
getAxis in class RelativeLocationPath

setAxis

public void setAxis(int axis)
Get the axis (defined in Axis class) for this step

Specified by:
setAxis in class RelativeLocationPath

getNodeType

public int getNodeType()
Returns the node-type for this step


getPredicates

public java.util.Vector getPredicates()
Returns the vector containing all predicates for this step.


addPredicates

public void addPredicates(java.util.Vector predicates)
Returns the vector containing all predicates for this step.


hasParentPattern

private boolean hasParentPattern()
Returns 'true' if this step has a parent pattern. This method will return 'false' if this step occurs on its own under an element like or .


hasPredicates

private boolean hasPredicates()
Returns 'true' if this step has any predicates


isPredicate

private boolean isPredicate()
Returns 'true' if this step is used within a predicate


isAbbreviatedDot

public boolean isAbbreviatedDot()
True if this step is the abbreviated step '.'


isAbbreviatedDDot

public boolean isAbbreviatedDDot()
True if this step is the abbreviated step '..'


typeCheck

public Type typeCheck(SymbolTable stable)
               throws TypeCheckError
Type check this step. The abbreviated steps '.' and '@attr' are assigned type node if they have no predicates. All other steps have type node-set.

Overrides:
typeCheck in class Expression
Parameters:
stable - The compiler/parser's symbol table
Throws:
TypeCheckError

translate

public void translate(ClassGenerator classGen,
                      MethodGenerator methodGen)
Translate a step by pushing the appropriate iterator onto the stack. The abbreviated steps '.' and '@attr' do not create new iterators if they are not part of a LocationPath and have no filters. In these cases a node index instead of an iterator is pushed onto the stack.

Overrides:
translate in class Expression
Parameters:
classGen - BCEL Java class generator
methodGen - BCEL Java method generator

translatePredicates

public void translatePredicates(ClassGenerator classGen,
                                MethodGenerator methodGen)
Translate a sequence of predicates. Each predicate is translated by constructing an instance of CurrentNodeListIterator which is initialized from another iterator (recursive call), a filter and a closure (call to translate on the predicate) and "this".


toString

public java.lang.String toString()
Returns a string representation of this step.

Specified by:
toString in class Expression