## Xalan-C++ API Documentation

### The Xalan C++ XSLT Processor Version 1.9

Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

# XPathExpression Class Reference

Collaboration diagram for XPathExpression:

[legend]
List of all members.

## Public Types

- typedef XALAN_STD_QUALIFIER
  ostream OstreamType
- typedef XalanVector< int > OpCodeMapType
- typedef XalanVector< XToken > TokenQueueType
- typedef OpCodeMapType::value_type OpCodeMapValueType
- typedef OpCodeMapValueType OpCodeMapSizeType
- typedef XalanVector< OpCodeMapValueType > OpCodeMapValueVectorType
- typedef XalanVector< double > NumberLiteralValueVectorType
- typedef OpCodeMapType::const_iterator OpCodeMapPositionType
- typedef OpCodeMapType::difference_type OpCodeMapDifferenceType
- typedef TokenQueueType::value_type TokenQueueValueType
- typedef int TokenQueueSizeType
- typedef TokenQueueSizeType TokenQueuePositionType
- enum eOpCodes {
  eELEMWILDCARD = -3, eEMPTY = -2, eENDOP = -1, eOP_XPATH = 1,
  eOP_OR = 2, eOP_AND = 3, eOP_NOTEQUALS = 4, eOP_EQUALS = 5,
  eOP_LTE = 6, eOP_LT = 7, eOP_GTE = 8, eOP_GT = 9,
  eOP_PLUS = 10, eOP_MINUS = 11, eOP_MULT = 12, eOP_DIV = 13,
  eOP_MOD = 14, eOP_NEG = 15, eOP_BOOL = 16, eOP_UNION = 17,
  eOP_LITERAL = 18, eOP_VARIABLE = 19, eOP_GROUP = 20, eOP_NUMBERLIT = 21,
  eOP_ARGUMENT = 22, eOP_EXTFUNCTION = 23, eOP_FUNCTION = 24, eOP_LOCATIONPATH = 25,
  eOP_PREDICATE = 26, eNODETYPE_COMMENT = 27, eNODETYPE_TEXT = 28, eNODETYPE_PI = 29,
  eNODETYPE_NODE = 30, eNODENAME = 31, eNODETYPE_ROOT = 32, eNODETYPE_ANYELEMENT = 33,
  eFROM_ANCESTORS = 34, eFROM_ANCESTORS_OR_SELF = 35, eFROM_ATTRIBUTES = 36, eFROM_CHILDREN = 37,
  eFROM_DESCENDANTS = 38, eFROM_DESCENDANTS_OR_SELF = 39, eFROM_FOLLOWING = 40, eFROM_FOLLOWING_SIBLINGS = 41,
  eFROM_PARENT = 42, eFROM_PRECEDING = 43, eFROM_PRECEDING_SIBLINGS = 44, eFROM_SELF = 45,
  eFROM_NAMESPACE = 46, eFROM_ROOT = 47, eOP_MATCHPATTERN = 48, eOP_LOCATIONPATHPATTERN = 49,
  eMATCH_ATTRIBUTE = 50, eMATCH_ANY_ANCESTOR = 51, eMATCH_IMMEDIATE_ANCESTOR = 52, eMATCH_ANY_ANCESTOR_WITH_PREDICATE = 53,
  eMATCH_ANY_ANCESTOR_WITH_FUNCTION_CALL = 54, eOP_PREDICATE_WITH_POSITION = 55, eOP_FUNCTION_POSITION = 56, eOP_FUNCTION_LAST = 57,
  eOP_FUNCTION_COUNT = 58, eOP_FUNCTION_NOT = 59, eOP_FUNCTION_TRUE = 60, eOP_FUNCTION_FALSE = 61,
  eOP_FUNCTION_BOOLEAN = 62, eOP_FUNCTION_NAME_0 = 63, eOP_FUNCTION_NAME_1 = 64, eOP_FUNCTION_LOCALNAME_0 = 65,
  eOP_FUNCTION_LOCALNAME_1 = 66, eOP_FUNCTION_FLOOR = 67, eOP_FUNCTION_CEILING = 68, eOP_FUNCTION_ROUND = 69,
  eOP_FUNCTION_NUMBER_0 = 70, eOP_FUNCTION_NUMBER_1 = 71, eOP_FUNCTION_STRING_0 = 72, eOP_FUNCTION_STRING_1 = 73,
  eOP_FUNCTION_STRINGLENGTH_0 = 74, eOP_FUNCTION_STRINGLENGTH_1 = 75, eOP_FUNCTION_NAMESPACEURI_0 = 76, eOP_FUNCTION_NAMESPACEURI_1 = 77,
  eOP_FUNCTION_SUM = 78, eOP_FUNCTION_CONCAT = 79, eOpCodeNextAvailable
  }
    List of operations codes. More...
- enum eDummy { s_opCodeMapLengthIndex = 1 }
    The length is always the opcode position + 1. More...
- enum eRelativeDirection { eRelativeBackward, eRelativeForward }

## Public Member Functions

- XPathExpression (MemoryManagerType &theManager)
- ~XPathExpression ()
- MemoryManagerType & getMemoryManager ()
- void reset ()
    Reset the expression.
- void shrink ()
    Shrink internal tables.
- OpCodeMapSizeType opCodeMapSize () const
    Retrieve number of elements in the operations code map.
- OpCodeMapValueType opCodeMapLength () const
    Retrieve length of the operations code map stored in the map.
- OpCodeMapPositionType getInitialOpCodePosition () const
- bool isValidOpCodePosition (OpCodeMapPositionType opPos) const
- bool isValidOpCodePosition (OpCodeMapSizeType theIndex) const
- OpCodeMapValueType getOpCodeMapValue (OpCodeMapSizeType theIndex) const
    Retrieve the value of an operation code at a specified index in the op code map.
- OpCodeMapValueType getOpCodeMapValue (OpCodeMapPositionType opPos) const
    Retrieve the value of an operation code at a specified position in the list.
- void setOpCodeMapValue (OpCodeMapSizeType theOpCodeMapIndex, const OpCodeMapValueType &theValue)
    Set the value of an operation code at a specified index in the OpCode map.
- OpCodeMapValueType getOpCodeArgumentLength (OpCodeMapPositionType opPos) const
- OpCodeMapValueType getOpCodeLengthFromOpMap (OpCodeMapPositionType opPos, MemoryManagerType &theManager) const
    Retrieve the length of an operation code at a specified position in the op map.
- OpCodeMapValueType getOpCodeLengthFromOpMap (OpCodeMapSizeType theIndex, MemoryManagerType &theManager) const
    Retrieve the length of an operation code at a specified index in the op map.
- OpCodeMapPositionType getNextOpCodePosition (OpCodeMapPositionType opPos) const
    Retrieve the position of the next operation code at a specified position in the list.
- OpCodeMapSizeType getNextOpCodePosition (OpCodeMapSizeType theIndex) const
    Retrieve the position of the next operation code at a specified index in the list.
- void setOpCodeArgs (eOpCodes theOpCode, OpCodeMapSizeType theIndex, const OpCodeMapValueVectorType &theArgs)
    Set the arguments for an operation code at a specified index in the list.
- OpCodeMapSizeType appendOpCode (eOpCodes theOpCode)
    Add an operation code to the list.
- OpCodeMapSizeType appendOpCode (eOpCodes theOpCode, const OpCodeMapValueVectorType &theArgs)
    Add an operation code with supplied arguments to the list.
- void replaceOpCode (OpCodeMapSizeType theIndex, eOpCodes theOldOpCode, eOpCodes theNewOpCode)
    Replace an operation code with supplied code.
- OpCodeMapValueType insertOpCode (eOpCodes theOpCode, OpCodeMapSizeType theIndex)
    Insert an operation code at a specified index in the list.
- void updateOpCodeLength (OpCodeMapSizeType theIndex)
    Update the length of an operation code at a specified index in the list.
- void updateShiftedOpCodeLength (OpCodeMapValueType theOpCode, OpCodeMapSizeType theOriginalIndex, OpCodeMapSizeType theNewIndex)
    Update the length of an operation code that has moved to a new index in the list.
- void updateOpCodeLength (OpCodeMapValueType theOpCode, OpCodeMapSizeType theIndex)
    Update the length of an operation code at a specified index in the list.
- void updateOpCodeLengthAfterNodeTest (OpCodeMapSizeType theIndex)
    Update the length of an operation code after a node test code.
- bool hasMoreTokens () const
    Whether there are any more tokens in the token queue.
- TokenQueueSizeType tokenQueueSize () const
    Retrieve number of elements in the token queue.
- bool isValidTokenQueuePosition (TokenQueueSizeType thePosition) const
- TokenQueueSizeType getTokenPosition () const
    Retrieve the current position in the token queue.
- void resetTokenPosition ()
    Set the current position in the token queue to zero.
- const XToken * getToken (TokenQueuePositionType thePosition) const
    Retrieve a token at the specified position in the token queue.
- const XToken * getNextToken ()
    Retrieve the next token in the token queue.
- const XToken * getPreviousToken ()
    Retrieve the previous token in the token queue.
- const XToken * getRelativeToken (TokenQueuePositionType theOffset, eRelativeDirection theDirection) const
    Retrieve a token at the specified offset relative to the current position in the token queue.
- void pushToken (const XalanDOMString &theToken)
    Push a token onto the token queue.
- void pushToken (double theNumber, const XalanDOMString &theString)
    Push a token onto the token queue.
- void insertToken (const XalanDOMString &theToken)
    Insert a token onto the token queue at the current position.
- void insertToken (double theNumber, const XalanDOMString &theString)
    Insert a token onto the token queue at the current position.
- void replaceRelativeToken (TokenQueuePositionType theOffset, eRelativeDirection theDirection, const XalanDOMString &theString)
    Replace a token in the token queue.
- void dumpOpCodeMap (PrintWriter &thePrintWriter, OpCodeMapSizeType theStartPosition=0) const
    Diagnostic function to output the operation code map.
- void dumpOpCodeMap (OstreamType &theStream, OpCodeMapSizeType theStartPosition=0) const
    Diagnostic function to output the operation code map.
- void dumpTokenQueue (PrintWriter &thePrintWriter, TokenQueueSizeType theStartPosition=0) const
    Diagnostic function to output the token queue.
- void dumpTokenQueue (OstreamType &theStream, TokenQueueSizeType theStartPosition=0) const
    Diagnostic function to output the token queue.
- void dumpRemainingTokenQueue (PrintWriter &thePrintWriter) const
    Diagnostic function to output the remaining tokens in the token queue.
- void dumpRemainingTokenQueue (OstreamType &theStream) const
    Diagnostic function to output the remaining tokens in the token queue.
- void pushValueOnOpCodeMap (const OpCodeMapType::value_type &theValue)
    Push a value onto the operations code map.
- void pushArgumentOnOpCodeMap (const XToken &theXToken)
    Push a token onto the token queue and its index onto the operations code map.
- void pushArgumentOnOpCodeMap (const XalanDOMString &theString)
    Push a token onto the token queue and its index onto the operations code map.
- void pushArgumentOnOpCodeMap (double theNumber, const XalanDOMString &theString)
    Push a token onto the token queue and its index onto the operations code map.
- void pushNumberLiteralOnOpCodeMap (double theNumber)
    Push a number literal onto the vector of number literals and its index onto the operations code map.
- double getNumberLiteral (int theIndex) const
    Get a number literal from the vector of number literals.
- void pushCurrentTokenOnOpCodeMap ()
    Push the current position in the token queue onto the operations code map.
- void setCurrentPattern (const XalanDOMString &thePattern)
    Change the current pattern in the pattern map.
- const XalanDOMString & getCurrentPattern () const
    Retrieve the current pattern in the pattern map.

## Static Public Member Functions

- bool isNodeTestOpCode (OpCodeMapValueType theOpCode)
    Whether the operation code is one of the node test types, for example, "ancestor::" or "child::".

## Member Typedef Documentation

typedef XalanVector<double> XPathExpression::NumberLiteralValueVectorType

typedef OpCodeMapType::difference_type XPathExpression::OpCodeMapDifferenceType

typedef OpCodeMapType::const_iterator XPathExpression::OpCodeMapPositionType

typedef OpCodeMapValueType XPathExpression::OpCodeMapSizeType

typedef XalanVector<int> XPathExpression::OpCodeMapType

typedef OpCodeMapType::value_type XPathExpression::OpCodeMapValueType

typedef XalanVector<OpCodeMapValueType> XPathExpression::OpCodeMapValueVectorType

typedef XALAN_STD_QUALIFIER ostream XPathExpression::OstreamType

typedef TokenQueueSizeType XPathExpression::TokenQueuePositionType

typedef int XPathExpression::TokenQueueSizeType

typedef XalanVector<XToken> XPathExpression::TokenQueueType

typedef TokenQueueType::value_type XPathExpression::TokenQueueValueType

## Member Enumeration Documentation

enum XPathExpression::eDummy

The length is always the opcode position + 1.

Length is always expressed as the opcode+length bytes, so it is always 2 or greater. This is the offset from the op code where the length is stored. It will always remain one.

Enumeration values:

  s_opCodeMapLengthIndex |

enum XPathExpression::eOpCodes

List of operations codes.

Code for the descriptions of the operations codes: [UPPER CASE] indicates a literal value, [lower case] is a description of a value, ([length] always indicates the length of the operation, including the operations code and the length integer.) {UPPER CASE} indicates the given production, {description} is the description of a new production, (For instance, {boolean expression} means some expression that should be resolved to a boolean.) * means that it occurs zero or more times, + means that it occurs one or more times, ? means that it is optional.

returns: indicates what the production should return.

Enumeration values:

  eELEMWILDCARD | [ELEMWILDCARD] Means ELEMWILDCARD ("*"), used instead of string index in some places.
  eEMPTY | [EMPTY] Empty slot to indicate NULL.
  eENDOP | [ENDOP] Some operators may like to have a terminator.
  eOP_XPATH | [OP_XPATH] [length] {expression} returns: XNodeSet XNumber XString XBoolean XRTree XObject
  eOP_OR | [OP_OR] [length] {boolean expression} {boolean expression} returns: XBoolean
  eOP_AND | [OP_AND] [length] {boolean expression} {boolean expression} returns: XBoolean
  eOP_NOTEQUALS | [OP_NOTEQUALS] [length] {expression} {expression} returns: XBoolean
  eOP_EQUALS | [OP_EQUALS] [length] {expression} {expression} returns: XBoolean
  eOP_LTE | [OP_LTE] (less-than-or-equals) [length] {number expression} {number expression} returns: XBoolean
  eOP_LT | [OP_LT] (less-than) [length] {number expression} {number expression} returns: XBoolean
  eOP_GTE | [OP_GTE] (greater-than-or-equals) [length] {number expression} {number expression} returns: XBoolean
  eOP_GT | [OP_GT] (greater-than) [length] {number expression} {number expression} returns: XBoolean
  eOP_PLUS | [OP_PLUS] [length] {number expression} {number expression} returns: XNumber
  eOP_MINUS | [OP_MINUS] [length] {number expression} {number expression} returns: XNumber
  eOP_MULT | [OP_MULT] [length] {number expression} {number expression} returns: XNumber
  eOP_DIV | [OP_DIV] [length] {number expression} {number expression} returns: XNumber
  eOP_MOD | [OP_MOD] [length] {number expression} {number expression} returns: XNumber
  eOP_NEG | [OP_NEG] [length] {number expression} returns: XNumber
  eOP_BOOL | [OP_BOOL] (cast operation) [length] {expression} returns: XBoolean
  eOP_UNION | [OP_UNION] [length] {PathExpr}+ returns: XNodeSet
  eOP_LITERAL | [OP_LITERAL] [3] [index to token] returns: XString
  eOP_VARIABLE | [OP_VARIABLE] [3] [index to token] returns: XString
  eOP_GROUP | [OP_GROUP] [length] {expression} returns: XNodeSet XNumber XString XBoolean XRTree XObject
  eOP_NUMBERLIT | [OP_NUMBERLIT] (Number literal.) [3] [index to token] returns: XString
  eOP_ARGUMENT | [OP_ARGUMENT] (Function argument.) [length] {expression} returns: XNodeSet XNumber XString XBoolean XRTree XObject
  eOP_EXTFUNCTION | [OP_EXTFUNCTION] (Extension function.) [length] [index to namespace token] [index to function name token] {OP_ARGUMENT}* returns: XNodeSet XNumber XString XBoolean XRTree XObject
  eOP_FUNCTION | [OP_FUNCTION] [length] [FUNC_ID] [arg count] {OP_ARGUMENT}* [ENDOP] returns: XNodeSet XNumber XString XBoolean XRTree XObject
  eOP_LOCATIONPATH | [OP_LOCATIONPATH] [length] {FROM_stepType} | {function}{predicate}* [ENDOP] (Note that element and attribute namespaces and names can be wildcarded '*'.) returns: XNodeSet
  eOP_PREDICATE | [OP_PREDICATE] [length] {expression} [ENDOP] (For safety) returns: XBoolean or XNumber
  eNODETYPE_COMMENT | [NODETYPE_COMMENT] No size or arguments. returns: XBoolean
  eNODETYPE_TEXT | [NODETYPE_TEXT] No size or arguments. returns: XBoolean
  eNODETYPE_PI | [NODETYPE_PI] [index to token] returns: XBoolean
  eNODETYPE_NODE | [NODETYPE_NODE] No size or arguments. returns: XBoolean
  eNODENAME | [NODENAME] [index to ns token or EMPTY] [index to name token] returns: XBoolean
  eNODETYPE_ROOT | [NODETYPE_ROOT] No size or arguments. returns: XBoolean
  eNODETYPE_ANYELEMENT | [NODETYPE_ANY] No size or arguments. returns: XBoolean
  eFROM_ANCESTORS | [FROM_stepType] [length, including predicates] [length of just the step, without the predicates] {node test} {predicates}? returns: XBoolean
  eFROM_ANCESTORS_OR_SELF |
  eFROM_ATTRIBUTES |
  eFROM_CHILDREN |
  eFROM_DESCENDANTS |
  eFROM_DESCENDANTS_OR_SELF |
  eFROM_FOLLOWING |
  eFROM_FOLLOWING_SIBLINGS |
  eFROM_PARENT |
  eFROM_PRECEDING |
  eFROM_PRECEDING_SIBLINGS |
  eFROM_SELF |
  eFROM_NAMESPACE |
  eFROM_ROOT |
  eOP_MATCHPATTERN | [OP_UNION] [length] {PathExpr}+ returns: XNodeSet
  eOP_LOCATIONPATHPATTERN | [OP_UNION] [length] {PathExpr}+ returns: XNodeSet
  eMATCH_ATTRIBUTE |
  eMATCH_ANY_ANCESTOR |
  eMATCH_IMMEDIATE_ANCESTOR |
  eMATCH_ANY_ANCESTOR_WITH_PREDICATE |
  eMATCH_ANY_ANCESTOR_WITH_FUNCTION_CALL |
  eOP_PREDICATE_WITH_POSITION | [OP_PREDICATE_WITH_POSITION] [length] {expression} [ENDOP] (For safety) returns: XBoolean or XNumber
  eOP_FUNCTION_POSITION | These are values for intrinsic functions which have been compiled directly into the op map.
  eOP_FUNCTION_LAST |
  eOP_FUNCTION_COUNT |
  eOP_FUNCTION_NOT |
  eOP_FUNCTION_TRUE |
  eOP_FUNCTION_FALSE |
  eOP_FUNCTION_BOOLEAN |
  eOP_FUNCTION_NAME_0 |
  eOP_FUNCTION_NAME_1 |
  eOP_FUNCTION_LOCALNAME_0 |
  eOP_FUNCTION_LOCALNAME_1 |
  eOP_FUNCTION_FLOOR |
  eOP_FUNCTION_CEILING |
  eOP_FUNCTION_ROUND |
  eOP_FUNCTION_NUMBER_0 |
  eOP_FUNCTION_NUMBER_1 |
  eOP_FUNCTION_STRING_0 |
  eOP_FUNCTION_STRING_1 |
  eOP_FUNCTION_STRINGLENGTH_0 |
  eOP_FUNCTION_STRINGLENGTH_1 |
  eOP_FUNCTION_NAMESPACEURI_0 |
  eOP_FUNCTION_NAMESPACEURI_1 |
  eOP_FUNCTION_SUM |
  eOP_FUNCTION_CONCAT |
  eOpCodeNextAvailable |

enum XPathExpression::eRelativeDirection

Enumeration values:

  eRelativeBackward |
  eRelativeForward |

## Constructor & Destructor Documentation

XPathExpression::XPathExpression | ( | MemoryManagerType & | theManager | ) | `[explicit]`

XPathExpression::~XPathExpression | ( |  | ) |

## Member Function Documentation

OpCodeMapSizeType XPathExpression::appendOpCode | ( | eOpCodes | theOpCode,
|  | const OpCodeMapValueVectorType & | theArgs
| ) |

Add an operation code with supplied arguments to the list.

Parameters:

  theOpCode | operation code
  theArgs | vector or arguments to supply

OpCodeMapSizeType XPathExpression::appendOpCode | ( | eOpCodes | theOpCode | ) |

Add an operation code to the list.

Parameters:

  theOpCode | operation code

Returns:
  the position of the op code

void XPathExpression::dumpOpCodeMap | ( | OstreamType & | theStream,
|  | OpCodeMapSizeType | theStartPosition = 0
| ) | const

Diagnostic function to output the operation code map.

Parameters:

  theStream | output stream
  theStartPosition | starting position in map

void XPathExpression::dumpOpCodeMap | ( | PrintWriter & | thePrintWriter,
|  | OpCodeMapSizeType | theStartPosition = 0
| ) | const

Diagnostic function to output the operation code map.

Parameters:

  thePrintWriter | output device
  theStartPosition | starting position in map

void XPathExpression::dumpRemainingTokenQueue | ( | OstreamType & | theStream | ) | const

Diagnostic function to output the remaining tokens in the token queue.

Parameters:

  theStream | The output stream

void XPathExpression::dumpRemainingTokenQueue | ( | PrintWriter & | thePrintWriter | ) | const

Diagnostic function to output the remaining tokens in the token queue.

Parameters:

  thePrintWriter | output device

void XPathExpression::dumpTokenQueue | ( | OstreamType & | theStream,
|  | TokenQueueSizeType | theStartPosition = 0
| ) | const

Diagnostic function to output the token queue.

Parameters:

  thePrintWriter | output device
  theStartPosition | starting position in token queue

void XPathExpression::dumpTokenQueue | ( | PrintWriter & | thePrintWriter,
|  | TokenQueueSizeType | theStartPosition = 0
| ) | const

Diagnostic function to output the token queue.

Parameters:

  thePrintWriter | output device
  theStartPosition | starting position in token queue

const XalanDOMString& XPathExpression::getCurrentPattern | ( |  | ) | const

Retrieve the current pattern in the pattern map.

Returns:
  string for current match pattern

OpCodeMapPositionType XPathExpression::getInitialOpCodePosition | ( |  | ) | const

MemoryManagerType& XPathExpression::getMemoryManager | ( |  | ) |

OpCodeMapSizeType XPathExpression::getNextOpCodePosition | ( | OpCodeMapSizeType | theIndex | ) | const

Retrieve the position of the next operation code at a specified index in the list.

Parameters:

  theIndex | theIndex in list

Returns:
  position of next operation code

OpCodeMapPositionType XPathExpression::getNextOpCodePosition | ( | OpCodeMapPositionType | opPos | ) | const

Retrieve the position of the next operation code at a specified position in the list.

Parameters:

  opPos | position in list

Returns:
  position of next operation code

const XToken* XPathExpression::getNextToken | ( |  | ) |

Retrieve the next token in the token queue.

Returns:
  pointer to XObject token

double XPathExpression::getNumberLiteral | ( | int | theIndex | ) | const

Get a number literal from the vector of number literals.

Parameters:

  theIndex | The index of the desired value.

OpCodeMapValueType XPathExpression::getOpCodeArgumentLength | ( | OpCodeMapPositionType | opPos | ) | const

OpCodeMapValueType XPathExpression::getOpCodeLengthFromOpMap | ( | OpCodeMapSizeType | theIndex,
|  | MemoryManagerType & | theManager
| ) | const

Retrieve the length of an operation code at a specified index in the op map.

Parameters:

  theIndex | The index in the op map

Returns:
  length of operation code

OpCodeMapValueType XPathExpression::getOpCodeLengthFromOpMap | ( | OpCodeMapPositionType | opPos,
|  | MemoryManagerType & | theManager
| ) | const

Retrieve the length of an operation code at a specified position in the op map.

Parameters:

  opPos | position in the op map

Returns:
  length of operation code

OpCodeMapValueType XPathExpression::getOpCodeMapValue | ( | OpCodeMapPositionType | opPos | ) | const

Retrieve the value of an operation code at a specified position in the list.

Parameters:

  opPos | position in list

Returns:
  value of operation code

OpCodeMapValueType XPathExpression::getOpCodeMapValue | ( | OpCodeMapSizeType | theIndex | ) | const

Retrieve the value of an operation code at a specified index in the op code map.

Parameters:

  theIndex | The index in list

Returns:
  value of operation code

const XToken* XPathExpression::getPreviousToken | ( |  | ) |

Retrieve the previous token in the token queue.

Returns:
  pointer to XObject token

const XToken* XPathExpression::getRelativeToken | ( | TokenQueuePositionType | theOffset,
|  | eRelativeDirection | theDirection
| ) | const

Retrieve a token at the specified offset relative to the current position in the token queue.

Parameters:

  theOffset | offset from current position
  theDirection | the direction in which to move

Returns:
  pointer to XObject token

const XToken* XPathExpression::getToken | ( | TokenQueuePositionType | thePosition | ) | const

Retrieve a token at the specified position in the token queue.

Parameters:

  thePosition | position in queue

Returns:
  pointer to XObject token

TokenQueueSizeType XPathExpression::getTokenPosition | ( |  | ) | const

Retrieve the current position in the token queue.

Returns:
  position in queue

bool XPathExpression::hasMoreTokens | ( |  | ) | const

Whether there are any more tokens in the token queue.

Returns:
  true if there are more tokens

OpCodeMapValueType XPathExpression::insertOpCode | ( | eOpCodes | theOpCode,
|  | OpCodeMapSizeType | theIndex
| ) |

Insert an operation code at a specified index in the list.

Parameters:

  theOpCode | operation code
  theIndex | index in list

void XPathExpression::insertToken | ( | double | theNumber,
|  | const XalanDOMString & | theString
| ) |

Insert a token onto the token queue at the current position.

Parameters:

  theNumber | the number value to push
  theString | the string value to push

void XPathExpression::insertToken | ( | const XalanDOMString & | theToken | ) |

Insert a token onto the token queue at the current position.

Parameters:

  theToken | the string value to push

bool XPathExpression::isNodeTestOpCode | ( | OpCodeMapValueType | theOpCode | ) | `[static]`

Whether the operation code is one of the node test types, for example, "ancestor::" or "child::".

Parameters:

  theOpCode | operation code

Returns:
  true if code represents a node test

bool XPathExpression::isValidOpCodePosition | ( | OpCodeMapSizeType | theIndex | ) | const

bool XPathExpression::isValidOpCodePosition | ( | OpCodeMapPositionType | opPos | ) | const

bool XPathExpression::isValidTokenQueuePosition | ( | TokenQueueSizeType | thePosition | ) | const

OpCodeMapValueType XPathExpression::opCodeMapLength | ( |  | ) | const

Retrieve length of the operations code map stored in the map.

The length of the entire map is stored after the first op code. That offset is determined by this const static member. Note that as expressions are defined recursively, this is really just the length of the first expression in the map, which is the top of the parse tree. Any subexpression will also have a length entry at the same offset from the beginning of the subexpression.

Returns:
  length of operations code map

OpCodeMapSizeType XPathExpression::opCodeMapSize | ( |  | ) | const

Retrieve number of elements in the operations code map.

Returns:
  size of operations code map

void XPathExpression::pushArgumentOnOpCodeMap | ( | double | theNumber,
|  | const XalanDOMString & | theString
| ) |

Push a token onto the token queue and its index onto the operations code map.

Parameters:

  theNumber | The numeric data for the token. This must be consistent with the lexical value in theString.
  theString | The string data for the token. The instance will keep a pointer to this string, so it must be persistent.

void XPathExpression::pushArgumentOnOpCodeMap | ( | const XalanDOMString & | theString | ) |

Push a token onto the token queue and its index onto the operations code map.

Parameters:

  theString | The string data for the token. The instance will keep a pointer to this string, so it must be persistent.

void XPathExpression::pushArgumentOnOpCodeMap | ( | const XToken & | theXToken | ) |

Push a token onto the token queue and its index onto the operations code map.

Parameters:

  theXToken | the XToken to push

void XPathExpression::pushCurrentTokenOnOpCodeMap | ( |  | ) |

| Push the current position in the token queue onto the operations code map.

void XPathExpression::pushNumberLiteralOnOpCodeMap | ( | double | theNumber | ) |

Push a number literal onto the vector of number literals and its index onto the operations code map.

Parameters:

  theToken | number value of the token to push

void XPathExpression::pushToken | ( | double | theNumber,
|  | const XalanDOMString & | theString
| ) |

Push a token onto the token queue.

Parameters:

  theNumber | the number value to push
  theString | the string value to push

void XPathExpression::pushToken | ( | const XalanDOMString & | theToken | ) |

Push a token onto the token queue.

Parameters:

  theToken | the string value to push

void XPathExpression::pushValueOnOpCodeMap | ( | const OpCodeMapType::value_type & | theValue | ) |

Push a value onto the operations code map.

Parameters:

  theToken | string value of the token to push

void XPathExpression::replaceOpCode | ( | OpCodeMapSizeType | theIndex,
|  | eOpCodes | theOldOpCode,
|  | eOpCodes | theNewOpCode
| ) |

Replace an operation code with supplied code.

Parameters:

  theIndex | The index of the old operation code
  theOldOpCode | The old operation code
  theNewOpCode | The new operation code

void XPathExpression::replaceRelativeToken | ( | TokenQueuePositionType | theOffset,
|  | eRelativeDirection | theDirection,
|  | const XalanDOMString & | theString
| ) |

Replace a token in the token queue.

Parameters:

  theOffset | the offset at which to replace the token.
  theString | The string data for the token. The instance will keep a pointer to this string, so it must be persistent.

void XPathExpression::reset | ( |  | ) |

| Reset the expression.

void XPathExpression::resetTokenPosition | ( |  | ) |

| Set the current position in the token queue to zero.

void XPathExpression::setCurrentPattern | ( | const XalanDOMString & | thePattern | ) |

Change the current pattern in the pattern map.

Parameters:

  thePattern | match pattern to make current

void XPathExpression::setOpCodeArgs | ( | eOpCodes | theOpCode,
|  | OpCodeMapSizeType | theIndex,
|  | const OpCodeMapValueVectorType & | theArgs
| ) |

Set the arguments for an operation code at a specified index in the list.

Parameters:

  opPos | position in list
  theOpCode | operation code
  theIndex | index in list
  theArgs | vector or arguments to supply

void XPathExpression::setOpCodeMapValue | ( | OpCodeMapSizeType | theOpCodeMapIndex,
|  | const OpCodeMapValueType & | theValue
| ) |

Set the value of an operation code at a specified index in the OpCode map.

Parameters:

  theOpCodeMapIndex | The index in the OpCode map
  theValue | value of operation code

void XPathExpression::shrink | ( |  | ) |

| Shrink internal tables.

TokenQueueSizeType XPathExpression::tokenQueueSize | ( |  | ) | const

Retrieve number of elements in the token queue.

Returns:
  size of token queue

void XPathExpression::updateOpCodeLength | ( | OpCodeMapValueType | theOpCode,
|  | OpCodeMapSizeType | theIndex
| ) |

Update the length of an operation code at a specified index in the list.

This presumes that the other opcodes have been appended to the expression, and that the specified op code's length needs to be set. The size includes the normal length of the opcode, plus the length of its subexpressions.

Parameters:

  theOpCode | operation code at specified index
  theIndex | index in list

void XPathExpression::updateOpCodeLength | ( | OpCodeMapSizeType | theIndex | ) |

Update the length of an operation code at a specified index in the list.

This presumes that the other opcodes have been appended to the expression, and that the specified op code's length needs to be set. The size includes the normal length of the opcode, plus the length of its subexpressions.

Parameters:

  theIndex | index in list

void XPathExpression::updateOpCodeLengthAfterNodeTest | ( | OpCodeMapSizeType | theIndex | ) |

Update the length of an operation code after a node test code.

Parameters:

  theIndex | index in list

void XPathExpression::updateShiftedOpCodeLength | ( | OpCodeMapValueType | theOpCode,
|  | OpCodeMapSizeType | theOriginalIndex,
|  | OpCodeMapSizeType | theNewIndex
| ) |

Update the length of an operation code that has moved to a new index in the list.

Parameters:

  theOpCode | operation code
  theOriginalIndex | original index in list
  theNewIndex | new index in list

The documentation for this class was generated from the following file:

- XPathExpression.hpp

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.9 Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.