Public Types | Public Member Functions

gnash::SafeStack< T > Class Template Reference

#include <SafeStack.h>

Inheritance diagram for gnash::SafeStack< T >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef StackType::size_type StackSize

Public Member Functions

const T & top (StackSize i) const
 From the top of the stack, get the i'th value down.
T & top (StackSize i)
 From the top of the stack, get the i'th value down.
const T & at (StackSize i) const
 From the top of the stack, get the i'th value down.
T & at (StackSize i)
 From the top of the stack, get the i'th value down.
T & value (StackSize i)
const T & value (StackSize i) const
void assign (StackSize i, T val)
 Assign a value to given index counting from bottom.
void drop (StackSize i)
void clear ()
 Drop all stack elements reguardless of the "downstop".
void push (const T t)
T & pop ()
 Pop the top of the stack.
void grow (StackSize i)
StackSize getDownstop () const
 Gives the size of the stack which is currently accessible.
StackSize size () const
 Alias for getDownstop().
bool empty () const
 Is the stack empty to us? (Check totalSize() != for actually empty).
StackSize fixDownstop ()
void setDownstop (StackSize i)
StackSize totalSize () const
 Return the complete stack size, including non-accessible elements.
void setAllSizes (StackSize total, StackSize downstop)
 SafeStack ()
 Default constructor.
 ~SafeStack ()
 Delete the allocated data.

Detailed Description

template<class T>
class gnash::SafeStack< T >

A stack in which all references given remain valid while the stack lives.

Safe in SafeStack means that you can maintain a reference given by the stack as long as the stack is alive. Since it is a reference, there is no guarantee that it will remain constant, but it is guaranteed that it will remain valid.

Access outside of the bounds of the stack will result in a StackException being thrown.


Member Typedef Documentation

template<class T>
typedef StackType::size_type gnash::SafeStack< T >::StackSize

Constructor & Destructor Documentation

template<class T>
gnash::SafeStack< T >::SafeStack (  )  [inline]

Default constructor.

template<class T>
gnash::SafeStack< T >::~SafeStack (  )  [inline]

Delete the allocated data.


Member Function Documentation

template<class T>
void gnash::SafeStack< T >::assign ( StackSize  i,
val 
) [inline]

Assign a value to given index counting from bottom.

template<class T>
T& gnash::SafeStack< T >::at ( StackSize  i  )  [inline]

From the top of the stack, get the i'th value down.

This is a non-const version of at(). 0 is the topmost value value.

template<class T>
const T& gnash::SafeStack< T >::at ( StackSize  i  )  const [inline]

From the top of the stack, get the i'th value down.

0 is the topmost value value.

Referenced by gnash::VM::markReachableResources().

template<class T>
void gnash::SafeStack< T >::clear (  )  [inline]

Drop all stack elements reguardless of the "downstop".

template<class T>
void gnash::SafeStack< T >::drop ( StackSize  i  )  [inline]

Shrink the stack by i entries. Does not invalidate any entries previously given, it just sets the top for pop, push, and top operations.

Referenced by gnash::as_environment::drop(), main(), and gnash::SafeStack< State >::pop().

template<class T>
bool gnash::SafeStack< T >::empty (  )  const [inline]

Is the stack empty to us? (Check totalSize() != for actually empty).

Referenced by main().

template<class T>
StackSize gnash::SafeStack< T >::fixDownstop (  )  [inline]

Makes the stack appear empty to subsequent callers. This can be used to simulate multiple stacks with a single stack, as in function calling. Returns the old downstop for restoring it using setDownstop.

Referenced by main().

template<class T>
StackSize gnash::SafeStack< T >::getDownstop (  )  const [inline]

Gives the size of the stack which is currently accessible.

Referenced by main().

template<class T>
void gnash::SafeStack< T >::grow ( StackSize  i  )  [inline]

Grow by i entries. Normally this is 1, but there might be sometime when you need more than that.

Referenced by gnash::SafeStack< State >::push().

template<class T>
T& gnash::SafeStack< T >::pop (  )  [inline]

Pop the top of the stack.

Referenced by main(), and gnash::as_environment::pop().

template<class T>
void gnash::SafeStack< T >::push ( const T  t  )  [inline]

Put a new value onto the top of the stack. The value will be copied.

Referenced by main(), gnash::as_environment::push(), and gnash::abc::Machine::pushCall().

template<class T>
void gnash::SafeStack< T >::setAllSizes ( StackSize  total,
StackSize  downstop 
) [inline]

Set the total size and local size of the stack, for restoring a stack through unknown changes.

template<class T>
void gnash::SafeStack< T >::setDownstop ( StackSize  i  )  [inline]

Makes the stack read to a depth of 'i'. This cannot be more than totalSize()

Referenced by main().

template<class T>
StackSize gnash::SafeStack< T >::size (  )  const [inline]
template<class T>
T& gnash::SafeStack< T >::top ( StackSize  i  )  [inline]

From the top of the stack, get the i'th value down.

This is a non-const version of top(). 0 is the topmost value value.

template<class T>
const T& gnash::SafeStack< T >::top ( StackSize  i  )  const [inline]

From the top of the stack, get the i'th value down.

0 is the topmost value.

Referenced by main(), gnash::SafeStack< State >::pop(), gnash::SafeStack< State >::push(), and gnash::as_environment::top().

template<class T>
StackSize gnash::SafeStack< T >::totalSize (  )  const [inline]

Return the complete stack size, including non-accessible elements.

This is required because AVM2 scope stacks are usable even when they appear inaccessible

Referenced by gnash::SafeStack< State >::at(), and gnash::VM::markReachableResources().

template<class T>
T& gnash::SafeStack< T >::value ( StackSize  i  )  [inline]

From the bottom of the stack, get the i'th value up. 0 is the bottommost value.

Referenced by gnash::as_environment::bottom(), gnash::VM::dumpState(), and main().

template<class T>
const T& gnash::SafeStack< T >::value ( StackSize  i  )  const [inline]

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