Defines a class to keep track of a stack for macro arguments. More...
Classes | |
class | InvalidStackContextException |
struct | ParamsVectorEntry |
class | PushParamFunctor |
class | StackEntry |
Public Types | |
enum | { eDefaultStackSize = 100 } |
typedef unsigned long | size_type |
typedef XalanVector < ParamsVectorEntry > | ParamsVectorType |
typedef XalanVector< const ElemVariable * > | RecursionGuardStackType |
typedef XalanVector< const ElemTemplateElement * > | ElemTemplateElementStackType |
typedef XalanVector< StackEntry > | VariableStackStackType |
Public Member Functions | |
VariablesStack (MemoryManagerType &theManager) | |
Constructor for a variable stack. More... | |
~VariablesStack () | |
void | reset () |
Reset the stack. More... | |
void | pushElementFrame (const ElemTemplateElement *elem) |
Push a frame marker for an element. More... | |
void | popElementFrame () |
Pop a frame marker for an element. More... | |
void | pushContextMarker () |
Push a context marker onto the stack to let us know when to stop searching for a var. More... | |
void | popContextMarker () |
Pop the current context from the current context stack. More... | |
void | pushParams (const ParamsVectorType &theParams) |
Push the provided objects as parameters. More... | |
const XObjectPtr | getParamVariable (const XalanQName &qname, StylesheetExecutionContext &executionContext, bool &fNameFound) |
Given a name, return a string representing the value, but don't look in the global space. More... | |
const XObjectPtr | getVariable (const XalanQName &qname, StylesheetExecutionContext &executionContext, bool &fNameFound) |
Given a name, find the corresponding XObject. More... | |
void | pushVariable (const XalanQName &name, const ElemVariable *var, const ElemTemplateElement *e) |
Push a named variable onto the processor variable stack. More... | |
void | pushVariable (const XalanQName &name, const XObjectPtr &val, const ElemTemplateElement *e) |
Push a named variable onto the processor variable stack. More... | |
void | start () |
Mark the top of the stack. More... | |
void | resetParams () |
Reset all params in the current stack frame. More... | |
void | markGlobalStackFrame () |
Mark the top of the global stack frame. More... | |
void | unmarkGlobalStackFrame () |
Clear the marking of the global stack frame. More... | |
void | setCurrentStackFrameIndex (size_type currentStackFrameIndex=~0u) |
Set the top of the stack frame from where a search for a variable or param should take place. More... | |
size_type | getCurrentStackFrameIndex () const |
Get the top of the stack frame from where a search for a variable or param should take place. More... | |
size_type | getGlobalStackFrameIndex () const |
Get the top of the global stack frame. More... | |
size_type | getStackSize () const |
Friends | |
class | CommitPushParams |
class | CommitPushElementFrame |
class | EnsurePop |
class | PushParamFunctor |
class | SetAndRestoreForceGlobalSearch |
Defines a class to keep track of a stack for macro arguments.
typedef XalanVector<const ElemVariable*> VariablesStack::RecursionGuardStackType |
typedef unsigned long VariablesStack::size_type |
|
explicit |
Constructor for a variable stack.
VariablesStack::~VariablesStack | ( | ) |
size_type VariablesStack::getCurrentStackFrameIndex | ( | ) | const |
Get the top of the stack frame from where a search for a variable or param should take place.
size_type VariablesStack::getGlobalStackFrameIndex | ( | ) | const |
Get the top of the global stack frame.
const XObjectPtr VariablesStack::getParamVariable | ( | const XalanQName & | qname, |
StylesheetExecutionContext & | executionContext, | ||
bool & | fNameFound | ||
) |
Given a name, return a string representing the value, but don't look in the global space.
Since the variable may not yet have been evaluated, this may return a null XObjectPtr.
theName | name of variable |
exeuctionContext | the current execution context |
fNameFound | set to true if the name was found, false if not. |
size_type VariablesStack::getStackSize | ( | ) | const |
const XObjectPtr VariablesStack::getVariable | ( | const XalanQName & | qname, |
StylesheetExecutionContext & | executionContext, | ||
bool & | fNameFound | ||
) |
Given a name, find the corresponding XObject.
If the variable exists, but has not yet been evaluated, the variable will be evaluated and the result returned. This may return a null XObjectPtr, if the variable was not found.
qname | name of variable |
exeuctionContext | the current execution context |
fNameFound | set to true if the name was found, false if not. |
void VariablesStack::markGlobalStackFrame | ( | ) |
Mark the top of the global stack frame.
void VariablesStack::popContextMarker | ( | ) |
Pop the current context from the current context stack.
void VariablesStack::popElementFrame | ( | ) |
Pop a frame marker for an element.
elem | the element |
void VariablesStack::pushContextMarker | ( | ) |
Push a context marker onto the stack to let us know when to stop searching for a var.
caller | caller node |
sourceNode | source node |
void VariablesStack::pushElementFrame | ( | const ElemTemplateElement * | elem | ) |
Push a frame marker for an element.
elem | the element |
void VariablesStack::pushParams | ( | const ParamsVectorType & | theParams | ) |
Push the provided objects as parameters.
You must call popContextMarker() when you are done with the arguments.
theParam | The vector containing the parameters. |
void VariablesStack::pushVariable | ( | const XalanQName & | name, |
const ElemVariable * | var, | ||
const ElemTemplateElement * | e | ||
) |
Push a named variable onto the processor variable stack.
Don't forget to call startContext before pushing a series of arguments for a given template.
name | name of variable |
val | pointer to ElemVariable |
e | element marker for variable |
void VariablesStack::pushVariable | ( | const XalanQName & | name, |
const XObjectPtr & | val, | ||
const ElemTemplateElement * | e | ||
) |
Push a named variable onto the processor variable stack.
Don't forget to call startContext before pushing a series of arguments for a given template.
name | name of variable |
val | pointer to XObject value |
e | element marker for variable |
void VariablesStack::reset | ( | ) |
Reset the stack.
void VariablesStack::resetParams | ( | ) |
Reset all params in the current stack frame.
void VariablesStack::setCurrentStackFrameIndex | ( | size_type | currentStackFrameIndex = ~0u | ) |
Set the top of the stack frame from where a search for a variable or param should take place.
Calling with no parameter will cause the index to be set to the size of the stack.
currentStackFrameIndex | new value of index |
void VariablesStack::start | ( | ) |
Mark the top of the stack.
void VariablesStack::unmarkGlobalStackFrame | ( | ) |
Clear the marking of the global stack frame.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.
![]() |
Xalan-C++ XSLT Processor Version 1.10 |
|