typedef XALAN_STD_QUALIFIER ostream XPathExpression::OstreamType |
typedef XalanVector<int> XPathExpression::OpCodeMapType |
typedef XalanVector<double> XPathExpression::NumberLiteralValueVectorType |
typedef int XPathExpression::TokenQueueSizeType |
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.
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} |
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} |
eOP_NUMBERLIT |
[OP_NUMBERLIT] (Number literal.
) [3] [index to token] returns: XString |
eOP_ARGUMENT |
[OP_ARGUMENT] (Function argument.
) [length] {expression} |
eOP_EXTFUNCTION |
[OP_EXTFUNCTION] (Extension function.
) [length] [index to namespace token] [index to function name token] {OP_ARGUMENT}* |
eOP_FUNCTION | [OP_FUNCTION] [length] [FUNC_ID] [arg count] {OP_ARGUMENT}* [ENDOP] |
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) |
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) |
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 |
XPathExpression::XPathExpression | ( | MemoryManagerType & | theManager | ) | [explicit] |
XPathExpression::~XPathExpression | ( | ) |
MemoryManagerType& XPathExpression::getMemoryManager | ( | ) |
void XPathExpression::reset | ( | ) |
Reset the expression.
void XPathExpression::shrink | ( | ) |
Shrink internal tables.
OpCodeMapSizeType XPathExpression::opCodeMapSize | ( | ) | const |
Retrieve number of elements in the operations code map.
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.
OpCodeMapPositionType XPathExpression::getInitialOpCodePosition | ( | ) | const |
bool XPathExpression::isValidOpCodePosition | ( | OpCodeMapPositionType | opPos | ) | const |
bool XPathExpression::isValidOpCodePosition | ( | OpCodeMapSizeType | theIndex | ) | const |
OpCodeMapValueType XPathExpression::getOpCodeMapValue | ( | OpCodeMapSizeType | theIndex | ) | const |
Retrieve the value of an operation code at a specified index in the op code map.
theIndex | The index in list |
OpCodeMapValueType XPathExpression::getOpCodeMapValue | ( | OpCodeMapPositionType | opPos | ) | const |
Retrieve the value of an operation code at a specified position in the list.
opPos | position in list |
void XPathExpression::setOpCodeMapValue | ( | OpCodeMapSizeType | theOpCodeMapIndex, | |
const OpCodeMapValueType & | theValue | |||
) |
Set the value of an operation code at a specified index in the OpCode map.
theOpCodeMapIndex | The index in the OpCode map | |
theValue | value of operation code |
OpCodeMapValueType XPathExpression::getOpCodeArgumentLength | ( | OpCodeMapPositionType | opPos | ) | const |
OpCodeMapValueType XPathExpression::getOpCodeLengthFromOpMap | ( | OpCodeMapPositionType | opPos, | |
MemoryManagerType & | theManager | |||
) | const |
Retrieve the length of an operation code at a specified position in the op map.
opPos | position in the op map |
OpCodeMapValueType XPathExpression::getOpCodeLengthFromOpMap | ( | OpCodeMapSizeType | theIndex, | |
MemoryManagerType & | theManager | |||
) | const |
Retrieve the length of an operation code at a specified index in the op map.
theIndex | The index in the op map |
OpCodeMapPositionType XPathExpression::getNextOpCodePosition | ( | OpCodeMapPositionType | opPos | ) | const |
Retrieve the position of the next operation code at a specified position in the list.
opPos | position in list |
OpCodeMapSizeType XPathExpression::getNextOpCodePosition | ( | OpCodeMapSizeType | theIndex | ) | const |
Retrieve the position of the next operation code at a specified index in the list.
theIndex | theIndex in list |
void XPathExpression::setOpCodeArgs | ( | eOpCodes | theOpCode, | |
OpCodeMapSizeType | theIndex, | |||
const OpCodeMapValueVectorType & | theArgs | |||
) |
Set the arguments for an operation code at a specified index in the list.
opPos | position in list | |
theOpCode | operation code | |
theIndex | index in list | |
theArgs | vector or arguments to supply |
OpCodeMapSizeType XPathExpression::appendOpCode | ( | eOpCodes | theOpCode | ) |
Add an operation code to the list.
theOpCode | operation code |
OpCodeMapSizeType XPathExpression::appendOpCode | ( | eOpCodes | theOpCode, | |
const OpCodeMapValueVectorType & | theArgs | |||
) |
Add an operation code with supplied arguments to the list.
theOpCode | operation code | |
theArgs | vector or arguments to supply |
void XPathExpression::replaceOpCode | ( | OpCodeMapSizeType | theIndex, | |
eOpCodes | theOldOpCode, | |||
eOpCodes | theNewOpCode | |||
) |
Replace an operation code with supplied code.
theIndex | The index of the old operation code | |
theOldOpCode | The old operation code | |
theNewOpCode | The new operation code |
OpCodeMapValueType XPathExpression::insertOpCode | ( | eOpCodes | theOpCode, | |
OpCodeMapSizeType | theIndex | |||
) |
Insert an operation code at a specified index in the list.
theOpCode | operation code | |
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.
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.
theOpCode | operation code | |
theOriginalIndex | original index in list | |
theNewIndex | new index in list |
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.
theOpCode | operation code at specified index | |
theIndex | index in list |
static bool XPathExpression::isNodeTestOpCode | ( | OpCodeMapValueType | theOpCode | ) | [static] |
Whether the operation code is one of the node test types, for example, "ancestor::" or "child::".
theOpCode | operation code |
void XPathExpression::updateOpCodeLengthAfterNodeTest | ( | OpCodeMapSizeType | theIndex | ) |
Update the length of an operation code after a node test code.
theIndex | index in list |
bool XPathExpression::hasMoreTokens | ( | ) | const |
Whether there are any more tokens in the token queue.
TokenQueueSizeType XPathExpression::tokenQueueSize | ( | ) | const |
Retrieve number of elements in the token queue.
bool XPathExpression::isValidTokenQueuePosition | ( | TokenQueueSizeType | thePosition | ) | const |
TokenQueueSizeType XPathExpression::getTokenPosition | ( | ) | const |
Retrieve the current position in the token queue.
void XPathExpression::resetTokenPosition | ( | ) |
Set the current position in the token queue to zero.
const XToken* XPathExpression::getToken | ( | TokenQueuePositionType | thePosition | ) | const |
Retrieve a token at the specified position in the token queue.
thePosition | position in queue |
const XToken* XPathExpression::getNextToken | ( | ) |
const XToken* XPathExpression::getPreviousToken | ( | ) |
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.
theOffset | offset from current position | |
theDirection | the direction in which to move |
void XPathExpression::pushToken | ( | const XalanDOMString & | theToken | ) |
Push a token onto the token queue.
theToken | the string value to push |
void XPathExpression::pushToken | ( | double | theNumber, | |
const XalanDOMString & | theString | |||
) |
Push a token onto the token queue.
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.
theToken | the string value to push |
void XPathExpression::insertToken | ( | double | theNumber, | |
const XalanDOMString & | theString | |||
) |
Insert a token onto the token queue at the current position.
theNumber | the number value to push | |
theString | the string value to push |
void XPathExpression::replaceRelativeToken | ( | TokenQueuePositionType | theOffset, | |
eRelativeDirection | theDirection, | |||
const XalanDOMString & | theString | |||
) |
Replace a token in the token queue.
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::dumpOpCodeMap | ( | PrintWriter & | thePrintWriter, | |
OpCodeMapSizeType | theStartPosition = 0 | |||
) | const |
Diagnostic function to output the operation code map.
thePrintWriter | output device | |
theStartPosition | starting position in map |
void XPathExpression::dumpOpCodeMap | ( | OstreamType & | theStream, | |
OpCodeMapSizeType | theStartPosition = 0 | |||
) | const |
Diagnostic function to output the operation code map.
theStream | output stream | |
theStartPosition | starting position in map |
void XPathExpression::dumpTokenQueue | ( | PrintWriter & | thePrintWriter, | |
TokenQueueSizeType | theStartPosition = 0 | |||
) | const |
Diagnostic function to output the token queue.
thePrintWriter | output device | |
theStartPosition | starting position in token queue |
void XPathExpression::dumpTokenQueue | ( | OstreamType & | theStream, | |
TokenQueueSizeType | theStartPosition = 0 | |||
) | const |
Diagnostic function to output the token queue.
thePrintWriter | output device | |
theStartPosition | starting position in token queue |
void XPathExpression::dumpRemainingTokenQueue | ( | PrintWriter & | thePrintWriter | ) | const |
Diagnostic function to output the remaining tokens in the token queue.
thePrintWriter | output device |
void XPathExpression::dumpRemainingTokenQueue | ( | OstreamType & | theStream, | |
MemoryManager & | theMemoryManager | |||
) | const |
Diagnostic function to output the remaining tokens in the token queue.
theStream | The output stream | |
theMemoryManager | The MemoryManager instance. |
void XPathExpression::pushValueOnOpCodeMap | ( | const OpCodeMapType::value_type & | theValue | ) |
Push a value onto the operations code map.
theToken | string value of the token to push |
void XPathExpression::pushArgumentOnOpCodeMap | ( | const XToken & | theXToken | ) |
Push a token onto the token queue and its index onto the operations code map.
theXToken | the XToken to push |
void XPathExpression::pushArgumentOnOpCodeMap | ( | const XalanDOMString & | theString | ) |
Push a token onto the token queue and its index onto the operations code map.
theString | The string data for the token. The instance will keep a pointer to this string, so it must be persistent. |
void XPathExpression::pushArgumentOnOpCodeMap | ( | double | theNumber, | |
const XalanDOMString & | theString | |||
) |
Push a token onto the token queue and its index onto the operations code map.
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::pushNumberLiteralOnOpCodeMap | ( | double | theNumber | ) |
Push a number literal onto the vector of number literals and its index onto the operations code map.
theToken | number value of the token to push |
double XPathExpression::getNumberLiteral | ( | int | theIndex | ) | const |
Get a number literal from the vector of number literals.
theIndex | The index of the desired value. |
void XPathExpression::pushCurrentTokenOnOpCodeMap | ( | ) |
Push the current position in the token queue onto the operations code map.
void XPathExpression::setCurrentPattern | ( | const XalanDOMString & | thePattern | ) |
Change the current pattern in the pattern map.
thePattern | match pattern to make current |
const XalanDOMString& XPathExpression::getCurrentPattern | ( | ) | const |
Retrieve the current pattern in the pattern map.
The documentation for this class was generated from the following file:
Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.
![]() |
Xalan-C++ XSLT Processor Version 1.10 |
|