Package org.apache.xpath.compiler
Class OpMap
- java.lang.Object
-
- org.apache.xpath.compiler.OpMap
-
- Direct Known Subclasses:
Compiler
public class OpMap extends java.lang.Object
This class represents the data structure basics of the XPath object.
-
-
Field Summary
Fields Modifier and Type Field Description static int
MAPINDEX_LENGTH
The length is always the opcode position + 1.
-
Constructor Summary
Constructors Constructor Description OpMap()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
error(java.lang.String msg, java.lang.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. the beginning of the next operation.static int
getNextOpPos(int[] opMap, int opPos)
Given an operation position, return the end position, i.e. the beginning of the next operation.int
getNextStepPos(int opPos)
Given a location step position, return the end position, i.e. the beginning of the next step.int
getOp(int opPos)
Given an operation position, return the current op.OpMapVector
getOpMap()
Get the opcode list that describes the XPath operations.java.lang.String
getPatternString()
Return the expression as a string for diagnostics.java.lang.String
getStepLocalName(int opPosOfStep)
Get the local name of the step.java.lang.String
getStepNS(int opPosOfStep)
Get the namespace of the step.int
getStepTestType(int opPosOfStep)
Get the test type of the step, i.e.java.lang.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.java.lang.String
toString()
Return the expression as a string for diagnostics.
-
-
-
Field Detail
-
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
-
-
Method Detail
-
toString
public java.lang.String toString()
Return the expression as a string for diagnostics.- Overrides:
toString
in classjava.lang.Object
- Returns:
- The expression string.
-
getPatternString
public java.lang.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 java.lang.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 javax.xml.transform.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:
javax.xml.transform.TransformerException
-
error
public void error(java.lang.String msg, java.lang.Object[] args) throws javax.xml.transform.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 inXPATHErrorResources
, 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.
-
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 java.lang.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 java.lang.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.
-
-