Xalan-C++ API Documentation

The Xalan C++ XSLT Processor Version 1.10

Classes | Public Types | Public Member Functions | Friends | List of all members
VariablesStack Class Reference

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

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
 

Detailed Description

Defines a class to keep track of a stack for macro arguments.

Member Typedef Documentation

typedef unsigned long VariablesStack::size_type

Member Enumeration Documentation

anonymous enum
Enumerator
eDefaultStackSize 

Constructor & Destructor Documentation

VariablesStack::VariablesStack ( MemoryManagerType theManager)
explicit

Constructor for a variable stack.

VariablesStack::~VariablesStack ( )

Member Function Documentation

size_type VariablesStack::getCurrentStackFrameIndex ( ) const

Get the top of the stack frame from where a search for a variable or param should take place.

Returns
current value of index
size_type VariablesStack::getGlobalStackFrameIndex ( ) const

Get the top of the global stack frame.

Returns
current value of index
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.

Parameters
theNamename of variable
exeuctionContextthe current execution context
fNameFoundset to true if the name was found, false if not.
Returns
pointer to XObject for variable
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.

Parameters
qnamename of variable
exeuctionContextthe current execution context
fNameFoundset to true if the name was found, false if not.
Returns
pointer to the corresponding XObject
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.

Parameters
elemthe element
void VariablesStack::pushContextMarker ( )

Push a context marker onto the stack to let us know when to stop searching for a var.

Parameters
callercaller node
sourceNodesource node
void VariablesStack::pushElementFrame ( const ElemTemplateElement elem)

Push a frame marker for an element.

Parameters
elemthe element
void VariablesStack::pushParams ( const ParamsVectorType theParams)

Push the provided objects as parameters.

You must call popContextMarker() when you are done with the arguments.

Parameters
theParamThe 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.

Parameters
namename of variable
valpointer to ElemVariable
eelement 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.

Parameters
namename of variable
valpointer to XObject value
eelement 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.

Parameters
currentStackFrameIndexnew value of index
void VariablesStack::start ( )

Mark the top of the stack.

void VariablesStack::unmarkGlobalStackFrame ( )

Clear the marking of the global stack frame.

Friends And Related Function Documentation

friend class CommitPushElementFrame
friend
friend class CommitPushParams
friend
friend class EnsurePop
friend
friend class PushParamFunctor
friend
friend class SetAndRestoreForceGlobalSearch
friend

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

Interpreting class diagrams

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

dot

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

Apache Logo