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
`static int` `MAPINDEX_LENGTH` The length is always the opcode position + 1.

### Constructor Summary

Constructors
Constructor and Description
`OpMap()`

### Method Summary

Methods
`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.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### 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

### Constructor Detail

#### OpMap

    public OpMap()

### Method Detail

#### toString

    public java.lang.String toString()

Return the expression as a string for diagnostics.

Overrides:
  `toString` in class `java.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 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(java.lang.String msg,
             java.lang.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.

#### 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.