org.apache.xalan.xsltc.compiler
Class StepPattern

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.Pattern
              extended by org.apache.xalan.xsltc.compiler.LocationPathPattern
                  extended by org.apache.xalan.xsltc.compiler.RelativePathPattern
                      extended by org.apache.xalan.xsltc.compiler.StepPattern
All Implemented Interfaces:
Constants
Direct Known Subclasses:
ProcessingInstructionPattern

 class StepPattern
extends RelativePathPattern


Field Summary
protected  int _axis
           
private  int _contextCase
           
private  boolean _isEpsilon
           
protected  int _nodeType
           
protected  java.util.Vector _predicates
           
private  double _priority
           
private  Step _step
           
private static int GENERAL_CONTEXT
           
private static int NO_CONTEXT
           
private static int SIMPLE_CONTEXT
           
 
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
StepPattern(int axis, int nodeType, java.util.Vector predicates)
           
 
Method Summary
private  int analyzeCases()
           
 int getAxis()
           
 double getDefaultPriority()
           
 StepPattern getKernelPattern()
           
private  java.lang.String getNextFieldName()
           
 int getNodeType()
           
protected  boolean hasPredicates()
           
 boolean isWildcard()
           
 void reduceKernelPattern()
           
 void setParser(Parser parser)
          Set this node's parser.
 StepPattern setPredicates(java.util.Vector predicates)
           
 void setPriority(double priority)
           
 java.lang.String toString()
           
 void translate(ClassGenerator classGen, MethodGenerator methodGen)
          Translate this node into JVM bytecodes.
private  void translateGeneralContext(ClassGenerator classGen, MethodGenerator methodGen)
           
private  void translateKernel(ClassGenerator classGen, MethodGenerator methodGen)
           
private  void translateNoContext(ClassGenerator classGen, MethodGenerator methodGen)
           
private  void translateSimpleContext(ClassGenerator classGen, MethodGenerator methodGen)
           
 Type typeCheck(SymbolTable stable)
          Returns the type of a pattern, which is always a NodeType.
 
Methods inherited from class org.apache.xalan.xsltc.compiler.LocationPathPattern
getPriority, getTemplate, noSmallerThan, setTemplate
 
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, 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

NO_CONTEXT

private static final int NO_CONTEXT
See Also:
Constant Field Values

SIMPLE_CONTEXT

private static final int SIMPLE_CONTEXT
See Also:
Constant Field Values

GENERAL_CONTEXT

private static final int GENERAL_CONTEXT
See Also:
Constant Field Values

_axis

protected final int _axis

_nodeType

protected final int _nodeType

_predicates

protected java.util.Vector _predicates

_step

private Step _step

_isEpsilon

private boolean _isEpsilon

_contextCase

private int _contextCase

_priority

private double _priority
Constructor Detail

StepPattern

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

setParser

public void setParser(Parser parser)
Description copied from class: SyntaxTreeNode
Set this node's parser. The parser (the XSLT parser) gives this syntax tree node access to the symbol table and XPath parser.

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

getNodeType

public int getNodeType()

setPriority

public void setPriority(double priority)

getKernelPattern

public StepPattern getKernelPattern()
Specified by:
getKernelPattern in class LocationPathPattern

isWildcard

public boolean isWildcard()
Specified by:
isWildcard in class LocationPathPattern

setPredicates

public StepPattern setPredicates(java.util.Vector predicates)

hasPredicates

protected boolean hasPredicates()

getDefaultPriority

public double getDefaultPriority()
Overrides:
getDefaultPriority in class LocationPathPattern

getAxis

public int getAxis()
Overrides:
getAxis in class LocationPathPattern

reduceKernelPattern

public void reduceKernelPattern()
Specified by:
reduceKernelPattern in class LocationPathPattern

toString

public java.lang.String toString()
Overrides:
toString in class LocationPathPattern

analyzeCases

private int analyzeCases()

getNextFieldName

private java.lang.String getNextFieldName()

typeCheck

public Type typeCheck(SymbolTable stable)
               throws TypeCheckError
Description copied from class: Pattern
Returns the type of a pattern, which is always a NodeType. A NodeType has a number of subtypes defined by NodeType._type corresponding to each type of node.

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

translateKernel

private void translateKernel(ClassGenerator classGen,
                             MethodGenerator methodGen)

translateNoContext

private void translateNoContext(ClassGenerator classGen,
                                MethodGenerator methodGen)

translateSimpleContext

private void translateSimpleContext(ClassGenerator classGen,
                                    MethodGenerator methodGen)

translateGeneralContext

private void translateGeneralContext(ClassGenerator classGen,
                                     MethodGenerator methodGen)

translate

public void translate(ClassGenerator classGen,
                      MethodGenerator methodGen)
Description copied from class: Pattern
Translate this node into JVM bytecodes. Patterns are translated as boolean expressions with true/false lists. Before calling translate on a pattern, make sure that the node being matched is on top of the stack. After calling translate, make sure to backpatch both true and false lists. True lists are the default, in the sense that they always "fall through". If this is not the intended semantics (e.g., see AlternativePattern.translate(org.apache.xalan.xsltc.compiler.util.ClassGenerator, org.apache.xalan.xsltc.compiler.util.MethodGenerator)) then a GOTO must be appended to the instruction list after calling translate.

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