Go to the documentation of this file.
19 #ifndef GNASH_AS_VALUE_H
20 #define GNASH_AS_VALUE_H
24 #include <boost/variant.hpp>
26 #include <type_traits>
52 static const double NaN = std::numeric_limits<double>::quiet_NaN();
58 return isNaN(num - num);
122 _value(
boost::blank())
136 : _type(other._type),
137 _value(std::move(other._value))
148 _value(std::string(str))
155 _value(std::move(str))
159 template <
typename T,
typename U =
160 typename std::enable_if<std::is_same<bool, T>::value>
::type>
193 _value = std::move(other._value);
201 const char*
typeOf()
const;
359 _type =
static_cast<AsType>(
static_cast<int>(_type) + 1);
365 _type =
static_cast<AsType>(
static_cast<int>(_type) - 1);
421 typedef boost::variant<boost::blank,
430 bool operator==(
const as_value&
v)
const;
433 bool operator!=(
const as_value&
v)
const;
439 bool equalsSameType(
const as_value&
v)
const;
453 DisplayObject* getCharacter(
bool skipRebinding =
false)
const;
463 double getNum()
const {
465 return boost::get<double>(_value);
471 bool getBool()
const {
473 return boost::get<bool>(_value);
479 const std::string& getStr()
const {
481 return boost::get<std::string>(_value);
530 #endif // GNASH_AS_VALUE_H
A proxy for DisplayObject pointers.
Definition: CharacterProxy.h:44
@ BOOLEAN_EXCEPT
Definition: as_value.h:107
bool isInf(const T &num)
Definition: as_value.h:56
bool isNativeType(const as_object *obj, T *&relay)
Check whether the object is an instance of a known type.
Definition: as_object.h:875
void setNaN(as_value &v)
Set a value to NaN.
Definition: as_value.h:524
void flag_exception()
Definition: as_value.h:357
bool parseNonDecimalInt(const std::string &s, double &d, bool whole)
Definition: as_value.cpp:793
friend std::ostream & operator<<(std::ostream &o, const as_value &)
Stream operator.
Definition: as_value.cpp:1034
DSOTEXPORT bool to_bool(int version) const
Conversion to boolean.
Definition: as_value.cpp:423
DSOEXPORT bool equals(const as_value &v, int version) const
Return true if this value is abstractly equal to the given one.
Definition: as_value.cpp:555
DisplayObject * get(bool skipRebinding=false) const
Get the pointed sprite, either original or rebound.
Definition: CharacterProxy.h:97
bool isNaN(const T &num)
Definition: GnashNumeric.h:62
bool is_exception() const
Definition: as_value.h:348
@ d
Definition: GnashKey.h:150
@ PROP_TO_STRING
Definition: namedStrings.h:191
The base class for all ActionScript objects.
Definition: as_object.h:162
std::string doubleToString(double val, int radix)
Convert numeric value to string value, following ECMA-262 specification.
Definition: as_value.cpp:832
A class to compose AMF buffers.
Definition: AMFConverter.h:56
@ U
Definition: GnashKey.h:133
bool is_bool() const
Definition: as_value.h:344
@ T
Definition: GnashKey.h:132
bool is_null() const
Definition: as_value.h:340
void log_debug(StringType msg, Args... args)
Definition: log.h:301
std::string typeName(const T &inst)
Definition: utility.h:93
#define _(String)
Definition: log.h:44
Provides information about timeline context.
Definition: as_environment.h:51
@ NUMBER_EXCEPT
Definition: as_value.h:111
The AVM1 virtual machine.
Definition: VM.h:72
virtual as_function * to_function()
Cast to a as_function, or return NULL.
Definition: as_object.h:471
AsType defaultPrimitive(int version) const
Definition: as_value.cpp:252
@ PTYPE_BOOLEAN
Definition: as_value.h:67
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:41
DSOEXPORT as_value()
Construct an undefined value.
Definition: as_value.h:119
const char * typeOf() const
Return the primitive type of this value as a string.
Definition: as_value.cpp:612
DSOEXPORT as_value(const char *str)
Construct a primitive String value.
Definition: as_value.h:145
DSOTEXPORT bool strictly_equals(const as_value &v) const
Return true if this value is strictly equal to the given one.
Definition: as_value.cpp:684
@ m
Definition: GnashKey.h:159
DSOEXPORT as_value & operator=(as_value &&other)
Definition: as_value.h:190
@ s
Definition: GnashKey.h:165
@ n
Definition: GnashKey.h:160
void set_double(double val)
Set to a primitive number.
Definition: as_value.cpp:739
@ start
Definition: klash_part.cpp:330
AsType
Definition: as_value.h:101
primitive_types
These are the primitive types, see the ECMAScript reference.
Definition: as_value.h:64
as_value to_primitive(AsType hint) const
Return value as a primitive type, with a preference.
Definition: as_value.cpp:263
A MovieClip is a container for DisplayObjects.
Definition: MovieClip.h:84
VM & getVM(const as_environment &env)
Definition: as_environment.h:222
bool array() const
Return true if this object should be treated as an array.
Definition: as_object.h:625
DSOEXPORT as_value & operator=(const as_value &v)
Assign to an as_value.
Definition: as_value.h:183
@ DISPLAYOBJECT_EXCEPT
Definition: as_value.h:115
void set_string(const std::string &str)
Set to a primitive string.
Definition: as_value.cpp:732
bool isFinite(double d)
Definition: GnashNumeric.h:47
as_object * get_object() const
Return the value as an as_object only if it is an as_object.
Definition: as_value.cpp:509
@ NULLTYPE
Definition: as_value.h:104
@ STRING_EXCEPT
Definition: as_value.h:109
FunctionArgs< as_value > Args
Definition: fn_call.h:121
@ a
Definition: GnashKey.h:147
@ NUMBER
Definition: as_value.h:110
double to_number(int version) const
Get a number representation for this value.
Definition: as_value.cpp:318
MovieClip * toMovieClip(bool skipRebinding=false) const
Returns value as a MovieClip if it is a MovieClip.
Definition: as_value.cpp:480
DSOEXPORT as_value invoke(const as_value &method, const as_environment &env, as_object *this_ptr, fn_call::Args &args, as_object *super=nullptr, const movie_definition *callerDef=nullptr)
Call an as_value on an as_object.
Definition: Global_as.h:166
An ActionScript type error.
Definition: GnashException.h:161
as_function * to_function() const
Return the value as a function only if it is a function.
Definition: as_value.cpp:499
type
Definition: GnashKey.h:330
DSOTEXPORT std::string to_string(int version=7) const
Get a std::string representation for this value.
Definition: as_value.cpp:205
A class to contain transferable arguments for a fn_call.
Definition: fn_call.h:57
virtual MovieClip * to_movie()
Definition: DisplayObject.h:266
bool writeAMF0(amf::Writer &w) const
Serialize value in AMF0 format.
Definition: as_value.cpp:759
Definition: String_as.h:34
as_object * constructInstance(as_function &ctor, const as_environment &env, fn_call::Args &args)
Definition: as_function.cpp:47
bool is_number() const
Return true if this value is strictly a number.
Definition: as_value.h:212
void set_as_object(as_object *obj)
Make this value a NULL, OBJECT, DISPLAYOBJECT value.
Definition: as_value.cpp:533
void set_undefined()
Set to undefined.
Definition: as_value.cpp:519
DisplayObject * displayObject() const
Return the DisplayObject associated with this object.
Definition: as_object.h:638
@ p
Definition: GnashKey.h:162
as_object * to_object(VM &vm) const
Return value as an object, converting primitive values as needed.
Definition: as_value.cpp:453
@ CLASS_STRING
Definition: namedStrings.h:243
@ CLASS_BOOLEAN
Definition: namedStrings.h:201
void unflag_exception()
Definition: as_value.h:363
ActionScript value type.
Definition: as_value.h:95
@ DISPLAYOBJECT
Definition: as_value.h:114
@ PROP_VALUE_OF
Definition: namedStrings.h:194
bool is_undefined() const
Definition: as_value.h:336
void set_bool(bool val)
Set to a primitive boolean.
Definition: as_value.cpp:746
movie_root & getRoot(const as_environment &env)
Definition: as_environment.cpp:645
void setReachable() const
Set any object value as reachable (for the GC)
Definition: as_value.cpp:691
@ NULLTYPE_EXCEPT
Definition: as_value.h:105
Relay * relay() const
Access the as_object's Relay object.
Definition: as_object.h:620
as_object * getObject(const DisplayObject *d)
Return the as_object associated with a DisplayObject if it exists.
Definition: DisplayObject.h:1160
@ f
Definition: GnashKey.h:152
bool is_string() const
Return true if this value is a string.
Definition: as_value.h:207
DSOEXPORT as_value(const as_value &v)
Copy constructor.
Definition: as_value.h:127
#define DSOTEXPORT
Definition: dsodefs.h:63
DSOEXPORT as_value(std::string str)
Construct a primitive String value.
Definition: as_value.h:152
@ c
Definition: GnashKey.h:149
@ CLASS_NUMBER
Definition: namedStrings.h:232
bool is_function() const
Return true if this value is a function.
Definition: as_value.cpp:753
DisplayObject * toDisplayObject(bool skipRebinding=false) const
Return value as a DisplayObject or NULL if this is not possible.
Definition: as_value.cpp:490
#define DSOEXPORT
Definition: dsodefs.h:55
DisplayObject is the base class for all DisplayList objects.
Definition: DisplayObject.h:169
void setReachable() const
Set the original sprite (if any) as reachable.
Definition: CharacterProxy.cpp:55
~as_value()
Definition: as_value.h:142
bool is_sprite() const
Return true if this value is a DISPLAYOBJECT.
Definition: as_value.h:224
std::string getTarget() const
bound one.
Definition: CharacterProxy.cpp:46
void set_null()
Set this value to the NULL value.
Definition: as_value.cpp:526
@ BOOLEAN
Definition: as_value.h:106
DSOEXPORT as_value(as_value &&other)
Move constructor.
Definition: as_value.h:135
@ o
Definition: GnashKey.h:161
@ UNDEFINED_EXCEPT
Definition: as_value.h:103
void log_unimpl(StringType msg, Args... args)
Definition: log.h:289
bool is_object() const
Return true if this value is an object.
Definition: as_value.h:219
as_value(T val)
Construct a primitive Boolean value.
Definition: as_value.h:161
@ PTYPE_NUMBER
Definition: as_value.h:66
as_value(double num)
Construct a primitive Number value.
Definition: as_value.h:168
as_value(as_object *obj)
Construct a null, Object, or DisplayObject value.
Definition: as_value.h:175
@ OBJECT_EXCEPT
Definition: as_value.h:113
@ b
Definition: GnashKey.h:148
@ e
Definition: GnashKey.h:151
@ UNDEFINED
Definition: as_value.h:102
@ OBJECT
Definition: as_value.h:112
@ STRING
Definition: as_value.h:108
bool isDangling() const
Return true if this sprite is dangling.
Definition: CharacterProxy.h:118
@ PTYPE_STRING
Definition: as_value.h:65
ActionScript Function, either builtin or SWF-defined.
Definition: as_function.h:63
std::ostream & operator<<(std::ostream &o, const URL &u)
Definition: URL.cpp:447
void setReachable() const
Mark this resource as being reachable.
Definition: GC.h:92