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

# VariablesStack Class Reference

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

Collaboration diagram for VariablesStack:

[legend]
List of all members.

## Public Types

- typedef unsigned long size_type
- typedef XalanVector< ParamsVectorEntry > ParamsVectorType
- typedef XalanVector< const
  ElemVariable * > RecursionGuardStackType
- typedef XalanVector< const
  ElemTemplateElement * > ElemTemplateElementStackType
- typedef XalanVector< StackEntry > VariableStackStackType
- enum { eDefaultStackSize = 100 }

## Public Member Functions

- VariablesStack (MemoryManagerType &theManager)
    Constructor for a variable stack.
- ~VariablesStack ()
- void reset ()
    Reset the stack.
- void pushElementFrame (const ElemTemplateElement *elem)
    Push a frame marker for an element.
- void popElementFrame ()
    Pop a frame marker for an element.
- void pushContextMarker ()
    Push a context marker onto the stack to let us know when to stop searching for a var.
- void popContextMarker ()
    Pop the current context from the current context stack.
- void pushParams (const ParamsVectorType &theParams)
    Push the provided objects as parameters.
- 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 XObjectPtr getVariable (const XalanQName &qname, StylesheetExecutionContext &executionContext, bool &fNameFound)
    Given a name, find the corresponding XObject.
- void pushVariable (const XalanQName &name, const ElemVariable *var, const ElemTemplateElement *e)
    Push a named variable onto the processor variable stack.
- void pushVariable (const XalanQName &name, const XObjectPtr &val, const ElemTemplateElement *e)
    Push a named variable onto the processor variable stack.
- void start ()
    Mark the top of the stack.
- void resetParams ()
    Reset all params in the current stack frame.
- void markGlobalStackFrame ()
    Mark the top of the global stack frame.
- void unmarkGlobalStackFrame ()
    Clear the marking of the global stack frame.
- 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.
- size_type getCurrentStackFrameIndex () const
    Get the top of the stack frame from where a search for a variable or param should take place.
- size_type getGlobalStackFrameIndex () const
    Get the top of the global stack frame.
- 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 XalanVector<const ElemTemplateElement*> VariablesStack::ElemTemplateElementStackType

typedef XalanVector<ParamsVectorEntry> VariablesStack::ParamsVectorType

typedef XalanVector<const ElemVariable*> VariablesStack::RecursionGuardStackType

typedef unsigned long VariablesStack::size_type

typedef XalanVector<StackEntry> VariablesStack::VariableStackStackType

## Member Enumeration Documentation

anonymous enum

Enumeration values:

  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:

  theName | name of variable
  exeuctionContext | the current execution context
  fNameFound | set 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:

  qname | name of variable
  exeuctionContext | the current execution context
  fNameFound | set 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:

  elem | the element

void VariablesStack::pushContextMarker | ( |  | ) |

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

Parameters:

  caller | caller node
  sourceNode | source node

void VariablesStack::pushElementFrame | ( | const ElemTemplateElement * | elem | ) |

Push a frame marker for an element.

Parameters:

  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.

Parameters:

  theParam | The vector containing the parameters.

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:

  name | name of variable
  val | pointer to XObject value
  e | element marker for variable

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:

  name | name of variable
  val | pointer to ElemVariable
  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.

Parameters:

  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.

## 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:

- VariablesStack.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.