Package org.apache.xpath.compiler
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 Stringm_currentPatternThe current pattern string, for diagnostics purposesstatic intMAPINDEX_LENGTHThe length is always the opcode position + 1. -
Constructor Summary
Constructors Constructor Description OpMap() -
Method Summary
Modifier and Type Method Description voiderror(String msg, Object[] args)Tell the user of an error, and probably throw an exception.intgetArgLength(int opPos)Get the length of an operation.intgetArgLengthOfStep(int opPos)Given a location step, get the length of that step.static intgetFirstChildPos(int opPos)Go to the first child of a given operation.static intgetFirstChildPosOfStep(int opPos)Get the first child position of a given location step.intgetFirstPredicateOpPos(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.intgetNextOpPos(int opPos)Given an operation position, return the end position, i.e.static intgetNextOpPos(int[] opMap, int opPos)Given an operation position, return the end position, i.e.intgetNextStepPos(int opPos)Given a location step position, return the end position, i.e.intgetOp(int opPos)Given an operation position, return the current op.OpMapVectorgetOpMap()Get the opcode list that describes the XPath operations.StringgetPatternString()Return the expression as a string for diagnostics.StringgetStepLocalName(int opPosOfStep)Get the local name of the step.StringgetStepNS(int opPosOfStep)Get the namespace of the step.intgetStepTestType(int opPosOfStep)Get the test type of the step, i.e.ObjectgetToken(int pos)Get the XPath as a list of tokens.ObjectVectorgetTokenQueue()Get the XPath as a list of tokens.intgetTokenQueueSize()Get size of the token queue.voidsetOp(int opPos, int value)Set the op at index to the given int.StringtoString()Return the expression as a string for diagnostics.
-
Field Details
-
m_currentPattern
The current pattern string, for diagnostics purposes -
MAPINDEX_LENGTH
public static final int MAPINDEX_LENGTHThe 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
Return the expression as a string for diagnostics. -
getPatternString
Return the expression as a string for diagnostics.- Returns:
- The expression string.
-
getTokenQueue
Get the XPath as a list of tokens.- Returns:
- ObjectVector of tokens.
-
getToken
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
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
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
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.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
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
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.
-