18 #if !defined(XALAN_VARIABLESSTACK_HEADER_GUARD)
19 #define XALAN_VARIABLESSTACK_HEADER_GUARD
50 class ElemTemplateElement;
52 class StylesheetExecutionContext;
157 pushParams(
const ParamsVectorType& theParams);
175 return findXObject(qname, executionContext,
true,
false, fNameFound);
195 return findXObject(qname, executionContext,
false,
true, fNameFound);
244 markGlobalStackFrame();
250 unmarkGlobalStackFrame();
262 if (currentStackFrameIndex == ~0u)
264 assert(
size_type(m_stack.size()) == m_stack.size());
266 m_currentStackFrameIndex =
size_type(m_stack.size());
270 m_currentStackFrameIndex = currentStackFrameIndex;
283 return m_currentStackFrameIndex;
294 return m_globalStackFrameIndex;
307 virtual const XalanDOMChar*
315 static const XalanDOMChar m_type[];
324 m_variablesStack(theVariablesStack)
363 bool isParam =
false);
371 bool isParam =
false);
489 enum { eDefaultStackSize = 100 };
493 class CommitPushParams
504 m_variablesStack = 0;
509 VariablesStack* m_variablesStack;
511 size_type m_stackSize;
514 friend class CommitPushParams;
548 assert(m_stack.empty() ==
false);
550 return m_stack.back();
553 friend class CommitPushElementFrame;
554 friend class EnsurePop;
556 friend class SetAndRestoreForceGlobalSearch;
563 bool fSearchGlobalSpace,
570 bool fSearchGlobalSpace);
573 VariableStackStackType m_stack;
575 size_type m_globalStackFrameIndex;
577 bool m_globalStackFrameMarked;
584 size_type m_currentStackFrameIndex;
591 RecursionGuardStackType m_guardStack;
597 ElemTemplateElementStackType m_elementFrameStack;
606 #endif // #if !defined(XALAN_VARIABLESSTACK_HEADER_GUARD)
size_type getStackSize() const
bool operator==(const XalanVector< Type > &theLHS, const XalanVector< Type > &theRHS)
virtual const XalanDOMChar * getType() const
Retrieve type of exception.
const ElemVariable * getVariable() const
Retrieve object's XObject pointer.
const ElemTemplateElement * getElement() const
Retrieve the ElemTemplateElem where frame begins.
XalanVector< ParamsVectorEntry > ParamsVectorType
size_type getGlobalStackFrameIndex() const
Get the top of the global stack frame.
PushParamFunctor(VariablesStack &theVariablesStack)
ParamsVectorEntry(const XalanQName *qname, const XObjectPtr value)
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...
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
const XObjectPtr getVariable(const XalanQName &qname, StylesheetExecutionContext &executionContext, bool &fNameFound)
Given a name, find the corresponding XObject.
Defines a class to keep track of a stack for macro arguments.
Class to represent a qualified name.
size_type getCurrentStackFrameIndex() const
Get the top of the stack frame from where a search for a variable or param should take place...
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...
const XalanQName * m_qname
XalanVector< StackEntry > VariableStackStackType
Class to hold XObjectPtr return types.
eType
Enumeration for types of stack entries, one of context state, context marker, element marker...
#define XALAN_XSLT_EXPORT
XalanVector< const ElemTemplateElement * > ElemTemplateElementStackType
const ElemVariable * m_variable
XalanVector< const ElemVariable * > RecursionGuardStackType
ParamsVectorEntry(const XalanQName *qname, const ElemVariable *variable)
const XObjectPtr & getValue() const
Retrieve object's XObject pointer.
eType getType() const
Determine type of stack entry.
void setValue(const XObjectPtr &theValue)
Retrieve object's XObject pointer.
const XalanQName * getName() const
Retrieve object name.