[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_object.cpp server/as_...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_object.cpp server/as_... |
Date: |
Thu, 01 Feb 2007 11:23:57 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/02/01 11:23:56
Modified files:
. : ChangeLog
server : as_object.cpp as_object.h
server/asobj : Number.cpp
testsuite/actionscript.all: Number.as
Log message:
* server/as_object.{cpp,h}: add generic and reusable
actionscript method handlers for toString() and
valueOf().
* server/asobj/Number.cpp (attachNumberInterface):
define toString() and valueOf() methods.
* testsuite/actionscript.all/Number.as: test toString()
and valueOf().
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2212&r2=1.2213
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.h?cvsroot=gnash&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Number.cpp?cvsroot=gnash&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/Number.as?cvsroot=gnash&r1=1.8&r2=1.9
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2212
retrieving revision 1.2213
diff -u -b -r1.2212 -r1.2213
--- ChangeLog 31 Jan 2007 22:05:54 -0000 1.2212
+++ ChangeLog 1 Feb 2007 11:23:56 -0000 1.2213
@@ -1,3 +1,13 @@
+2007-02-01 Sandro Santilli <address@hidden>
+
+ * server/as_object.{cpp,h}: add generic and reusable
+ actionscript method handlers for toString() and
+ valueOf().
+ * server/asobj/Number.cpp (attachNumberInterface):
+ define toString() and valueOf() methods.
+ * testsuite/actionscript.all/Number.as: test toString()
+ and valueOf().
+
2007-01-31 Sandro Santilli <address@hidden>
* server/sprite_instance.cpp (sprite_attach_movie):
Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- server/as_object.cpp 31 Jan 2007 15:50:09 -0000 1.31
+++ server/as_object.cpp 1 Feb 2007 11:23:56 -0000 1.32
@@ -30,6 +30,7 @@
#include "Property.h" // for findGetterSetter
#include "VM.h"
#include "GnashException.h"
+#include "fn_call.h" // for generic methods
#include <set>
#include <string>
@@ -481,5 +482,32 @@
}
}
+void
+as_object::tostring_method(const fn_call& fn)
+{
+ assert(dynamic_cast<as_object*>(fn.this_ptr));
+ as_object* obj = static_cast<as_object*>(fn.this_ptr);
+
+ const char* text_val = obj->get_text_value();
+ if ( text_val )
+ {
+ fn.result->set_string(text_val);
+ }
+ else
+ {
+ assert(fn.result->is_undefined());
+ //fn.result->set_undefined();
+ }
+}
+
+void
+as_object::valueof_method(const fn_call& fn)
+{
+ assert(dynamic_cast<as_object*>(fn.this_ptr));
+ as_object* obj = static_cast<as_object*>(fn.this_ptr);
+
+ *(fn.result) = obj->get_primitive_value();
+}
+
} // end of gnash namespace
Index: server/as_object.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- server/as_object.h 22 Jan 2007 20:55:45 -0000 1.32
+++ server/as_object.h 1 Feb 2007 11:23:56 -0000 1.33
@@ -331,6 +331,15 @@
return m_prototype.get();
}
+ /// @{ Common ActionScript methods for characters
+ /// TODO: make protected
+
+ static void tostring_method(const fn_call& fn);
+
+ static void valueof_method(const fn_call& fn);
+
+ /// @} Common ActionScript getter-setters for characters
+
protected:
/// Get a property value by name
Index: server/asobj/Number.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Number.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/asobj/Number.cpp 18 Jan 2007 22:53:21 -0000 1.9
+++ server/asobj/Number.cpp 1 Feb 2007 11:23:56 -0000 1.10
@@ -18,7 +18,7 @@
//
//
-/* $Id: Number.cpp,v 1.9 2007/01/18 22:53:21 strk Exp $ */
+/* $Id: Number.cpp,v 1.10 2007/02/01 11:23:56 strk Exp $ */
// Implementation of ActionScript Number class.
@@ -37,7 +37,7 @@
//static void number_to_string(const fn_call& fn);
static void
-attachNumberInterface(as_object& /*o*/)
+attachNumberInterface(as_object& o)
{
// FIXME: add Number interface here:
// Number.MAX_VALUE
@@ -45,8 +45,12 @@
// Number.NaN
// Number.NEGATIVE_INFINITY
// Number.POSITIVE_INFINITY
+
// Number.toString()
+ o.init_member("toString", &as_object::tostring_method);
+
// Number.valueOf()
+ o.init_member("valueOf", &as_object::valueof_method);
}
static as_object*
Index: testsuite/actionscript.all/Number.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/Number.as,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- testsuite/actionscript.all/Number.as 5 Nov 2006 00:45:27 -0000
1.8
+++ testsuite/actionscript.all/Number.as 1 Feb 2007 11:23:56 -0000
1.9
@@ -26,7 +26,7 @@
// TODO: test with SWF target != 6 (the only one tested so far)
//
-rcsid="$Id: Number.as,v 1.8 2006/11/05 00:45:27 rsavoye Exp $";
+rcsid="$Id: Number.as,v 1.9 2007/02/01 11:23:56 strk Exp $";
#include "check.as"
@@ -43,3 +43,25 @@
check_equals (n1 , 268 );
check_equals (268 , n1 );
+// Test Number.toString
+check_equals(typeof(n1.toString), "function");
+check_equals(typeof(n1.toString()), "string");
+check_equals(n1.toString(), "268");
+#if OUTPUT_VERSION > 5
+check(Number.prototype.toString != Object.prototype.toString);
+#else
+// equality of function for SW5 makes no sense, it seems
+xcheck_equals(Number.prototype.toString, Object.prototype.toString);
+#endif
+
+// Test Number.valueOf
+check_equals(typeof(n1.valueOf), "function");
+check_equals(typeof(n1.valueOf()), "number");
+check_equals(n1.toString(), 268);
+#if OUTPUT_VERSION > 5
+check(Number.prototype.valueOf != Object.prototype.valueOf);
+#else
+// equality of function for SW5 makes no sense, it seems
+xcheck_equals(Number.prototype.valueOf, Object.prototype.valueOf);
+#endif
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/as_object.cpp server/as_...,
Sandro Santilli <=