19 #ifndef GNASH_AS_VALUE_H
20 #define GNASH_AS_VALUE_H
24 #include <boost/variant.hpp>
26 #include <type_traits>
53 static const double NaN = std::numeric_limits<double>::quiet_NaN();
59 return isNaN(num - num);
123 _value(
boost::blank())
137 : _type(other._type),
138 _value(
std::move(other._value))
149 _value(
std::string(str))
156 _value(
std::move(str))
160 template <
typename T>
161 as_value(
T val,
typename std::enable_if<std::is_same<bool, T>::value>::
type*
196 _value = std::move(other._value);
204 const char*
typeOf()
const;
362 _type =
static_cast<AsType>(
static_cast<int>(_type) + 1);
368 _type =
static_cast<AsType>(
static_cast<int>(_type) - 1);
424 typedef boost::variant<boost::blank,
433 bool operator==(
const as_value&
v)
const;
436 bool operator!=(
const as_value&
v)
const;
442 bool equalsSameType(
const as_value&
v)
const;
451 as_object* getObj()
const;
456 DisplayObject* getCharacter(
bool skipRebinding =
false)
const;
461 CharacterProxy getCharacterProxy()
const;
466 double getNum()
const {
468 return boost::get<double>(_value);
474 bool getBool()
const {
476 return boost::get<bool>(_value);
482 const std::string& getStr()
const {
484 return boost::get<std::string>(_value);
533 #endif // GNASH_AS_VALUE_H
Definition: as_value.h:116
primitive_types
These are the primitive types, see the ECMAScript reference.
Definition: as_value.h:64
DSOTEXPORT bool to_bool(int version) const
Conversion to boolean.
Definition: as_value.cpp:423
void set_bool(bool val)
Set to a primitive boolean.
Definition: as_value.cpp:746
Definition: GnashKey.h:150
bool isNaN(const T &num)
Definition: GnashNumeric.h:62
A MovieClip is a container for DisplayObjects.
Definition: MovieClip.h:83
DisplayObject is the base class for all DisplayList objects.
Definition: DisplayObject.h:168
SWFStream & s
Definition: DefineBitsTag.cpp:71
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
ActionScript value type.
Definition: as_value.h:95
#define UNUSED(x)
Definition: utility.h:113
Definition: as_value.h:109
void setNaN(as_value &v)
Set a value to NaN.
Definition: as_value.h:527
std::string doubleToString(double val, int radix)
Convert numeric value to string value, following ECMA-262 specification.
Definition: as_value.cpp:832
Definition: as_value.h:105
DSOEXPORT as_value & operator=(const as_value &v)
Assign to an as_value.
Definition: as_value.h:186
bool is_null() const
Definition: as_value.h:343
DisplayObject * toDisplayObject(bool skipRebinding=false) const
Return value as a DisplayObject or NULL if this is not possible.
Definition: as_value.cpp:490
Definition: as_value.h:107
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
A class to compose AMF buffers.
Definition: AMFConverter.h:55
as_value(double num)
Construct a primitive Number value.
Definition: as_value.h:171
type
Definition: GnashKey.h:329
DSOEXPORT as_value(std::string str)
Construct a primitive String value.
Definition: as_value.h:153
Definition: as_value.h:103
Definition: as_value.h:106
Definition: as_value.h:104
as_value to_primitive(AsType hint) const
Return value as a primitive type, with a preference.
Definition: as_value.cpp:263
The base class for all ActionScript objects.
Definition: as_object.h:161
~as_value()
Definition: as_value.h:143
Definition: GnashKey.h:161
Definition: as_value.h:67
bool is_number() const
Return true if this value is strictly a number.
Definition: as_value.h:215
Definition: as_value.h:108
AsType
Definition: as_value.h:101
as_object * get_object() const
Return the value as an as_object only if it is an as_object.
Definition: as_value.cpp:509
std::ostream & operator<<(std::ostream &o, const URL &u)
Definition: URL.cpp:447
DSOEXPORT as_value(as_value &&other)
Move constructor.
Definition: as_value.h:136
bool isInf(const T &num)
Definition: as_value.h:57
bool writeAMF0(amf::Writer &w) const
Serialize value in AMF0 format.
Definition: as_value.cpp:759
A proxy for DisplayObject pointers.
Definition: CharacterProxy.h:43
bool is_bool() const
Definition: as_value.h:347
friend std::ostream & operator<<(std::ostream &o, const as_value &)
Stream operator.
Definition: as_value.cpp:1034
Definition: as_value.h:114
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
AsType defaultPrimitive(int version) const
Definition: as_value.cpp:252
Definition: as_value.h:111
Definition: as_value.h:115
bool is_object() const
Return true if this value is an object.
Definition: as_value.h:222
void set_undefined()
Set to undefined.
Definition: as_value.cpp:519
tuple v
Definition: test.py:11
bool is_undefined() const
Definition: as_value.h:339
as_value(as_object *obj)
Construct a null, Object, or DisplayObject value.
Definition: as_value.h:178
Definition: as_value.h:110
DSOEXPORT as_value()
Construct an undefined value.
Definition: as_value.h:120
#define DSOEXPORT
Definition: dsodefs.h:55
const char * typeOf() const
Return the primitive type of this value as a string.
Definition: as_value.cpp:612
as_value(T val, typename std::enable_if< std::is_same< bool, T >::value >::type *dummy=0)
Construct a primitive Boolean value.
Definition: as_value.h:161
Definition: as_value.h:68
bool is_sprite() const
Return true if this value is a DISPLAYOBJECT.
Definition: as_value.h:227
void set_as_object(as_object *obj)
Make this value a NULL, OBJECT, DISPLAYOBJECT value.
Definition: as_value.cpp:533
MovieClip * toMovieClip(bool skipRebinding=false) const
Returns value as a MovieClip if it is a MovieClip.
Definition: as_value.cpp:480
The AVM1 virtual machine.
Definition: VM.h:71
Definition: GnashKey.h:132
bool parseNonDecimalInt(const std::string &s, double &d, bool whole)
Definition: as_value.cpp:793
Definition: as_value.h:112
void set_double(double val)
Set to a primitive number.
Definition: as_value.cpp:739
double to_number(int version) const
Get a number representation for this value.
Definition: as_value.cpp:318
void flag_exception()
Definition: as_value.h:360
void set_string(const std::string &str)
Set to a primitive string.
Definition: as_value.cpp:732
as_object * to_object(VM &vm) const
Return value as an object, converting primitive values as needed.
Definition: as_value.cpp:453
#define DSOTEXPORT
Definition: dsodefs.h:63
void unflag_exception()
Definition: as_value.h:366
bool is_function() const
Return true if this value is a function.
Definition: as_value.cpp:753
tuple w
Definition: test.py:8
bool is_string() const
Return true if this value is a string.
Definition: as_value.h:210
DSOEXPORT as_value(const char *str)
Construct a primitive String value.
Definition: as_value.h:146
as_function * to_function() const
Return the value as a function only if it is a function.
Definition: as_value.cpp:499
Definition: as_value.h:66
DSOTEXPORT std::string to_string(int version=7) const
Get a std::string representation for this value.
Definition: as_value.cpp:205
Definition: as_value.h:113
DSOEXPORT as_value(const as_value &v)
Copy constructor.
Definition: as_value.h:128
void setReachable() const
Set any object value as reachable (for the GC)
Definition: as_value.cpp:691
DSOEXPORT as_value & operator=(as_value &&other)
Definition: as_value.h:193
ActionScript Function, either builtin or SWF-defined.
Definition: as_function.h:62
void set_null()
Set this value to the NULL value.
Definition: as_value.cpp:526
bool is_exception() const
Definition: as_value.h:351