Gnash  0.8.10
Classes | Public Member Functions
gnash::Property Class Reference

An abstract property. More...

#include <Property.h>

List of all members.

Classes

struct  SetReachable
 Mark the stored value reachable. More...

Public Member Functions

 Property (const ObjectURI &uri, const as_value &value, const PropFlags &flags)
 Property (const ObjectURI &uri, as_function *getter, as_function *setter, const PropFlags &flags, bool destroy=false)
 Property (const ObjectURI &uri, as_c_function_ptr getter, as_c_function_ptr setter, const PropFlags &flags, bool destroy=false)
 Property (const Property &p)
 Copy constructor.
const PropFlagsgetFlags () const
 accessor to the properties flags
void setFlags (const PropFlags &flags) const
 Set the flags of the property.
as_value getValue (const as_object &this_ptr) const
 Get value of this property.
as_value getCache () const
 Get internal cached value of this property.
void setCache (const as_value &v)
 Set internal cached value of this property.
bool setValue (as_object &this_ptr, const as_value &value) const
 Set value of this property.
bool isGetterSetter () const
 Is this a getter/setter property?
void clearVisible (int swfVersion)
 Clear visibility flags.
const ObjectURIuri () const
 The name-namespace pair (ObjectURI) of this Property.
void setReachable () const
 Mark this property as being reachable (for the GC)

Detailed Description

An abstract property.

A Property is a holder for a value or a getter-setter. Properties have special const semantics: the value of a Property does not affect its outward state, so the value of a const Property can be changed.


Constructor & Destructor Documentation

gnash::Property::Property ( const ObjectURI uri,
const as_value value,
const PropFlags flags 
) [inline]
gnash::Property::Property ( const ObjectURI uri,
as_function getter,
as_function setter,
const PropFlags flags,
bool  destroy = false 
) [inline]
gnash::Property::Property ( const ObjectURI uri,
as_c_function_ptr  getter,
as_c_function_ptr  setter,
const PropFlags flags,
bool  destroy = false 
) [inline]
gnash::Property::Property ( const Property p) [inline]

Copy constructor.


Member Function Documentation

void gnash::Property::clearVisible ( int  swfVersion) [inline]

Clear visibility flags.

References gnash::PropFlags::clear_visible().

as_value gnash::Property::getCache ( ) const

Get internal cached value of this property.

For simple properties, this is the usual value; for user-defined getter-setter this is a cached value to watch for infinitely recurse on calling the getter or setter; Native getter-setter has no cache, undefined will be returned for them.

Referenced by gnash::as_object::add_property(), and gnash::as_object::get_member().

const PropFlags& gnash::Property::getFlags ( ) const [inline]
as_value gnash::Property::getValue ( const as_object this_ptr) const

Get value of this property.

Parameters:
this_ptrThe as_object used to set the 'this' pointer. for calling getter function (GetterSetterProperty); it will be unused when getting or setting SimpleProperty properties.
Returns:
the value of this property

References gnash::key::a, gnash::getVM(), and gnash::GetterSetter::get().

Referenced by gnash::constructInstance(), gnash::as_object::get_member(), gnash::as_object::get_prototype(), gnash::sendEvent(), gnash::getOwnProperty(), gnash::abc::Machine::execute(), gnash::abc::Machine::pushGet(), and gnash::MovieClip::constructAsScriptObject().

bool gnash::Property::isGetterSetter ( ) const [inline]
void gnash::Property::setCache ( const as_value v)

Set internal cached value of this property.

For simple properties, this is the usual value; for user-defined getter-setter this is a cached value to watch for infinitely recurse on calling the getter or setter; Native getter-setter has no cache, nothing would happen for them.

References gnash::key::_1.

Referenced by gnash::as_object::add_property(), and gnash::PropertyList::addGetterSetter().

void gnash::Property::setFlags ( const PropFlags flags) const [inline]

Set the flags of the property.

Referenced by gnash::PropertyList::addGetterSetter().

void gnash::Property::setReachable ( ) const [inline]

Mark this property as being reachable (for the GC)

Referenced by gnash::PropertyList::setReachable().

bool gnash::Property::setValue ( as_object this_ptr,
const as_value value 
) const

Set value of this property.

Parameters:
this_ptrThe as_object used to set the 'this' pointer for calling getter/setter function It will be unused when getting or setting simple properties. This parameter is non-const as nothing prevents an eventual "Setter" function from actually modifying it, so we can't promise constness.
valueThe new value for this property. It will be used as first argument of the 'setter' function if this is a Getter/Setter property.
See also:
isGetterSetter().
Returns:
true if the property was set, otherwise false. Read-only properties can generally not be set, but destructive properties are still allowed to be replaced, as this should be invisible to the user.

References gnash::readOnly(), gnash::key::a, gnash::getVM(), gnash::GetterSetter::set(), and gnash::GetterSetter::setCache().

Referenced by gnash::setLocal(), gnash::abc::Machine::pushSet(), and gnash::PropertyList::setValue().

const ObjectURI& gnash::Property::uri ( ) const [inline]

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