gnash-commit
[Top][All Lists]
Advanced

[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
+




reply via email to

[Prev in Thread] Current Thread [Next in Thread]