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.h server/as_va...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_object.h server/as_va...
Date: Thu, 01 Feb 2007 13:40:08 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/02/01 13:40:08

Modified files:
        .              : ChangeLog 
        server         : as_object.h as_value.cpp 
        server/asobj   : Number.cpp 
        testsuite/actionscript.all: Object.as 

Log message:
                * server/as_object.h (get_primitive_value): return
                  an OBJECT value by default (not a number).
                * server/as_value.cpp (operator==): avoid infinite
                  recursion now that get_primitive_value is allowed
                  to return an OBJECT again.
                * server/asobj/Numbec.cpp: override get_primitive_value
                  to return a NUMBER value.
                * testsuite/actionscript.all/Object.as: don't expect
                  failures for valueOf tests.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2214&r2=1.2215
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.h?cvsroot=gnash&r1=1.33&r2=1.34
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Number.cpp?cvsroot=gnash&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/Object.as?cvsroot=gnash&r1=1.19&r2=1.20

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2214
retrieving revision 1.2215
diff -u -b -r1.2214 -r1.2215
--- ChangeLog   1 Feb 2007 11:57:19 -0000       1.2214
+++ ChangeLog   1 Feb 2007 13:40:07 -0000       1.2215
@@ -1,5 +1,17 @@
 2007-02-01 Sandro Santilli <address@hidden>
 
+       * server/as_object.h (get_primitive_value): return
+         an OBJECT value by default (not a number).
+       * server/as_value.cpp (operator==): avoid infinite
+         recursion now that get_primitive_value is allowed
+         to return an OBJECT again.
+       * server/asobj/Numbec.cpp: override get_primitive_value
+         to return a NUMBER value.
+       * testsuite/actionscript.all/Object.as: don't expect
+         failures for valueOf tests.
+
+2007-02-01 Sandro Santilli <address@hidden>
+
        * testsuite/actionscript.all/Object.as: add tests for toString
          and valueOf. The latter doesn't work yet.
        * server/asobj/Object.cpp: add valueOf and toString methods,

Index: server/as_object.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.h,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- server/as_object.h  1 Feb 2007 11:23:56 -0000       1.33
+++ server/as_object.h  1 Feb 2007 13:40:07 -0000       1.34
@@ -131,15 +131,19 @@
 
        /// Return the "primitive" value of this object
        //
-       /// The default implementation returns the numeric value
-       /// of this object, other objects can override this function
+       /// The default implementation returns an Object value,
+       /// other objects can override this function
        /// to provide another "preferred" primitive. Primitive
-       /// values are: undefined, null, boolean, string, number.
+       /// values are: undefined, null, boolean, string, number, object.
        ///
        /// See ECMA-2.6.2 (section 4.3.2).
        ///
-       virtual as_value get_primitive_value() const {
-               return as_value(get_numeric_value());
+       virtual as_value get_primitive_value() const
+       {
+               // Since as_value(const as_object*) doesn't exist
+               // we have to cast the value to non-const, or
+               // the as_value will result as beeing a BOOLEAN ! (?)
+               return as_value(const_cast<as_object*>(this)); 
        }
 
        /// Set a member value

Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- server/as_value.cpp 21 Dec 2006 11:34:49 -0000      1.16
+++ server/as_value.cpp 1 Feb 2007 13:40:08 -0000       1.17
@@ -536,7 +536,10 @@
        else
        {
                // convert this value to a primitive and recurse
-               return to_primitive() == v;
+               as_value v2 = to_primitive();
+               if ( v2.is_object() ) return false;
+               else return v2 == v;
+               //return to_primitive() == v;
        }
     }
     else

Index: server/asobj/Number.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Number.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- server/asobj/Number.cpp     1 Feb 2007 11:23:56 -0000       1.10
+++ server/asobj/Number.cpp     1 Feb 2007 13:40:08 -0000       1.11
@@ -18,7 +18,7 @@
 //
 //
 
-/* $Id: Number.cpp,v 1.10 2007/02/01 11:23:56 strk Exp $ */
+/* $Id: Number.cpp,v 1.11 2007/02/01 13:40:08 strk Exp $ */
 
 // Implementation of ActionScript Number class.
 
@@ -96,6 +96,11 @@
                return _val;
        }
 
+       as_value get_primitive_value() const 
+       {
+               return get_numeric_value();
+       }
+
 };
 
 

Index: testsuite/actionscript.all/Object.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/Object.as,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- testsuite/actionscript.all/Object.as        1 Feb 2007 11:57:20 -0000       
1.19
+++ testsuite/actionscript.all/Object.as        1 Feb 2007 13:40:08 -0000       
1.20
@@ -20,7 +20,7 @@
 // compile this test case with Ming makeswf, and then
 // execute it like this gnash -1 -r 0 -v out.swf
 
-rcsid="$Id: Object.as,v 1.19 2007/02/01 11:57:20 strk Exp $";
+rcsid="$Id: Object.as,v 1.20 2007/02/01 13:40:08 strk Exp $";
 
 #include "check.as"
 
@@ -55,7 +55,7 @@
 check (obj.member == 1)
 check_equals(typeof(obj.toString()), 'string');
 check_equals(obj.toString(), '[object Object]');
-xcheck_equals(typeof(obj.valueOf()), 'object');
+check_equals(typeof(obj.valueOf()), 'object');
 check_equals(obj.valueOf(), obj);
 
 // Test Object creation using literal initialization




reply via email to

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