Gnash  0.8.10
Public Types | Public Member Functions
gnash::SafeStack Class Reference

#include <SafeStack.h>

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

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

typedef StackType::size_type gnash::SafeStack::StackSize

Constructor & Destructor Documentation

gnash::SafeStack::SafeStack ( ) [inline]

Default constructor.

gnash::SafeStack::~SafeStack ( ) [inline]

Delete the allocated data.


Member Function Documentation

void gnash::SafeStack::assign ( StackSize  i,
val 
) [inline]

Assign a value to given index counting from bottom.

const T& gnash::SafeStack::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().

T& gnash::SafeStack::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.

void gnash::SafeStack::clear ( ) [inline]

Drop all stack elements reguardless of the "downstop".

Referenced by gnash::movie_root::reset().

void gnash::SafeStack::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(), gnash::abc::Machine::execute(), gnash::abc::Machine::immediateFunction(), gnash::abc::Machine::pushCall(), and gnash::SafeStack< State >::pop().

bool gnash::SafeStack::empty ( ) const [inline]

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

Referenced by gnash::abc::Machine::completeName().

StackSize gnash::SafeStack::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 gnash::abc::Machine::executeFunction(), and gnash::abc::Machine::instantiateClass().

StackSize gnash::SafeStack::getDownstop ( ) const [inline]

Gives the size of the stack which is currently accessible.

void gnash::SafeStack::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::abc::Machine::execute(), gnash::abc::Machine::immediateFunction(), gnash::abc::Machine::pushCall(), and gnash::SafeStack< State >::push().

T& gnash::SafeStack::pop ( ) [inline]

Pop the top of the stack.

Referenced by gnash::as_environment::pop(), and gnash::abc::Machine::execute().

void gnash::SafeStack::push ( const T &  t) [inline]
void gnash::SafeStack::setAllSizes ( StackSize  total,
StackSize  downstop 
) [inline]

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

Referenced by gnash::abc::Machine::executeFunction(), and gnash::abc::Machine::instantiateClass().

void gnash::SafeStack::setDownstop ( StackSize  i) [inline]

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

Referenced by gnash::abc::Machine::immediateFunction(), and gnash::abc::Machine::pushCall().

StackSize gnash::SafeStack::size ( ) const [inline]
const T& gnash::SafeStack::top ( StackSize  i) const [inline]
T& gnash::SafeStack::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.

StackSize gnash::SafeStack::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::abc::Machine::executeFunction(), gnash::abc::Machine::instantiateClass(), gnash::SafeStack< State >::at(), and gnash::VM::markReachableResources().

T& gnash::SafeStack::value ( StackSize  i) [inline]

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

Referenced by gnash::abc::Machine::execute(), and gnash::VM::dumpState().

const T& gnash::SafeStack::value ( StackSize  i) const [inline]

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