Class OpMap

java.lang.Object
org.apache.xpath.compiler.OpMap
Direct Known Subclasses:
Compiler

public class OpMap
extends Object
This class represents the data structure basics of the XPath object.
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected String m_currentPattern
    The current pattern string, for diagnostics purposes
    static int MAPINDEX_LENGTH
    The length is always the opcode position + 1.
  • Constructor Summary

    Constructors
    Constructor Description
    OpMap()  
  • Method Summary

    Modifier and Type Method Description
    void error​(String msg, Object[] args)
    Tell the user of an error, and probably throw an exception.
    int getArgLength​(int opPos)
    Get the length of an operation.
    int getArgLengthOfStep​(int opPos)
    Given a location step, get the length of that step.
    static int getFirstChildPos​(int opPos)
    Go to the first child of a given operation.
    static int getFirstChildPosOfStep​(int opPos)
    Get the first child position of a given location step.
    int getFirstPredicateOpPos​(int opPos)
    Given an FROM_stepType position, return the position of the first predicate, if there is one, or else this will point to the end of the FROM_stepType.
    int getNextOpPos​(int opPos)
    Given an operation position, return the end position, i.e.
    static int getNextOpPos​(int[] opMap, int opPos)
    Given an operation position, return the end position, i.e.
    int getNextStepPos​(int opPos)
    Given a location step position, return the end position, i.e.
    int getOp​(int opPos)
    Given an operation position, return the current op.
    OpMapVector getOpMap()
    Get the opcode list that describes the XPath operations.
    String getPatternString()
    Return the expression as a string for diagnostics.
    String getStepLocalName​(int opPosOfStep)
    Get the local name of the step.
    String getStepNS​(int opPosOfStep)
    Get the namespace of the step.
    int getStepTestType​(int opPosOfStep)
    Get the test type of the step, i.e.
    Object getToken​(int pos)
    Get the XPath as a list of tokens.
    ObjectVector getTokenQueue()
    Get the XPath as a list of tokens.
    int getTokenQueueSize()
    Get size of the token queue.
    void setOp​(int opPos, int value)
    Set the op at index to the given int.
    String toString()
    Return the expression as a string for diagnostics.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • m_currentPattern

      protected String m_currentPattern
      The current pattern string, for diagnostics purposes
    • MAPINDEX_LENGTH

      public static final int MAPINDEX_LENGTH
      The length is always the opcode position + 1. Length is always expressed as the opcode+length bytes, so it is always 2 or greater.
      See Also:
      Constant Field Values
  • Constructor Details

    • OpMap

      public OpMap()
  • Method Details

    • toString

      public String toString()
      Return the expression as a string for diagnostics.
      Overrides:
      toString in class Object
      Returns:
      The expression string.
    • getPatternString

      public String getPatternString()
      Return the expression as a string for diagnostics.
      Returns:
      The expression string.
    • getTokenQueue

      public ObjectVector getTokenQueue()
      Get the XPath as a list of tokens.
      Returns:
      ObjectVector of tokens.
    • getToken

      public Object getToken​(int pos)
      Get the XPath as a list of tokens.
      Parameters:
      pos - index into token queue.
      Returns:
      The token, normally a string.
    • getTokenQueueSize

      public int getTokenQueueSize()
      Get size of the token queue.
      Returns:
      The size of the token queue.
    • getOpMap

      public OpMapVector getOpMap()
      Get the opcode list that describes the XPath operations. It contains operations codes and indexes into the m_tokenQueue. I use an array instead of a full parse tree in order to cut down on the number of objects created.
      Returns:
      An IntVector that is the opcode list that describes the XPath operations.
    • getOp

      public int getOp​(int opPos)
      Given an operation position, return the current op.
      Parameters:
      opPos - index into op map.
      Returns:
      the op that corresponds to the opPos argument.
    • setOp

      public void setOp​(int opPos, int value)
      Set the op at index to the given int.
      Parameters:
      opPos - index into op map.
      value - Value to set
    • getNextOpPos

      public int getNextOpPos​(int opPos)
      Given an operation position, return the end position, i.e. the beginning of the next operation.
      Parameters:
      opPos - An op position of an operation for which there is a size entry following.
      Returns:
      position of next operation in m_opMap.
    • getNextStepPos

      public int getNextStepPos​(int opPos)
      Given a location step position, return the end position, i.e. the beginning of the next step.
      Parameters:
      opPos - the position of a location step.
      Returns:
      the position of the next location step.
    • getNextOpPos

      public static int getNextOpPos​(int[] opMap, int opPos)
      Given an operation position, return the end position, i.e. the beginning of the next operation.
      Parameters:
      opMap - The operations map.
      opPos - index to operation, for which there is a size entry following.
      Returns:
      position of next operation in m_opMap.
    • getFirstPredicateOpPos

      public int getFirstPredicateOpPos​(int opPos) throws TransformerException
      Given an FROM_stepType position, return the position of the first predicate, if there is one, or else this will point to the end of the FROM_stepType. Example: int posOfPredicate = xpath.getNextOpPos(stepPos); boolean hasPredicates = OpCodes.OP_PREDICATE == xpath.getOp(posOfPredicate);
      Parameters:
      opPos - position of FROM_stepType op.
      Returns:
      position of predicate in FROM_stepType structure.
      Throws:
      TransformerException
    • error

      public void error​(String msg, Object[] args) throws TransformerException
      Tell the user of an error, and probably throw an exception.
      Parameters:
      msg - An error msgkey that corresponds to one of the constants found in XPATHErrorResources, which is a key for a format string.
      args - An array of arguments represented in the format string, which may be null.
      Throws:
      TransformerException - if the current ErrorListoner determines to throw an exception.
      TransformerException
    • getFirstChildPos

      public static int getFirstChildPos​(int opPos)
      Go to the first child of a given operation.
      Parameters:
      opPos - position of operation.
      Returns:
      The position of the first child of the operation.
    • getArgLength

      public int getArgLength​(int opPos)
      Get the length of an operation.
      Parameters:
      opPos - The position of the operation in the op map.
      Returns:
      The size of the operation.
    • getArgLengthOfStep

      public int getArgLengthOfStep​(int opPos)
      Given a location step, get the length of that step.
      Parameters:
      opPos - Position of location step in op map.
      Returns:
      The length of the step.
    • getFirstChildPosOfStep

      public static int getFirstChildPosOfStep​(int opPos)
      Get the first child position of a given location step.
      Parameters:
      opPos - Position of location step in the location map.
      Returns:
      The first child position of the step.
    • getStepTestType

      public int getStepTestType​(int opPosOfStep)
      Get the test type of the step, i.e. NODETYPE_XXX value.
      Parameters:
      opPosOfStep - The position of the FROM_XXX step.
      Returns:
      NODETYPE_XXX value.
    • getStepNS

      public String getStepNS​(int opPosOfStep)
      Get the namespace of the step.
      Parameters:
      opPosOfStep - The position of the FROM_XXX step.
      Returns:
      The step's namespace, NodeTest.WILD, or null for null namespace.
    • getStepLocalName

      public String getStepLocalName​(int opPosOfStep)
      Get the local name of the step.
      Parameters:
      opPosOfStep - The position of the FROM_XXX step.
      Returns:
      OpCodes.EMPTY, OpCodes.ELEMWILDCARD, or the local name.