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: Sat, 25 Nov 2006 14:27:44 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/11/25 14:27:44

Modified files:
        .              : ChangeLog 
        server         : as_object.cpp as_object.h 

Log message:
                * server/as_object.{h,cpp} (setPropFlags, set_member_flags):
                  fix property case handling, documented it.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1760&r2=1.1761
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.h?cvsroot=gnash&r1=1.20&r2=1.21

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1760
retrieving revision 1.1761
diff -u -b -r1.1760 -r1.1761
--- ChangeLog   25 Nov 2006 13:09:46 -0000      1.1760
+++ ChangeLog   25 Nov 2006 14:27:44 -0000      1.1761
@@ -1,5 +1,7 @@
 2006-11-25 Sandro Santilli <address@hidden>
 
+       * server/as_object.{h,cpp} (setPropFlags, set_member_flags):
+         fix property case handling, documented it.
        * testsuite/simple.exp: show NOTES with verbosity
          level == 1.
 

Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- server/as_object.cpp        24 Nov 2006 15:41:14 -0000      1.17
+++ server/as_object.cpp        25 Nov 2006 14:27:44 -0000      1.18
@@ -43,6 +43,25 @@
        return get_member_default(name, val);
 }
 
+bool
+as_object::add_property(const std::string& key, as_function& getter,
+               as_function& setter)
+{
+       // TODO: keep a refenrence in the class definition
+       //       rather then caling ::get() everytime ?
+       VM& vm = VM::get();
+       if ( vm.getSWFVersion() < 7 )
+       {
+               std::string name = key;
+               boost::to_lower(name, vm.getLocale());
+               return _members.addGetterSetter(name, getter, setter);
+       }
+       else
+       {
+               return _members.addGetterSetter(key, getter, setter);
+       }
+}
+
 /*protected*/
 bool
 as_object::get_member_default(const tu_stringi& namei, as_value* val)
@@ -195,10 +214,21 @@
 }
 
 bool
-as_object::set_member_flags(const tu_stringi& name, int setTrue, int setFalse)
+as_object::set_member_flags(const tu_stringi& name_tu,
+               int setTrue, int setFalse)
 {
+       std::string name(name_tu.c_str());
+
+       // TODO: keep a refenrence in the class definition
+       //       rather then caling ::get() everytime ?
+       VM& vm = VM::get();
+       if ( vm.getSWFVersion() < 7 )
+       {
+               boost::to_lower(name, vm.getLocale());
+       }
+
        // TODO: accept a std::string directly
-       return _members.setFlags(std::string(name.c_str()), setTrue, setFalse);
+       return _members.setFlags(name, setTrue, setFalse);
 }
 
 void
@@ -252,7 +282,8 @@
                                propstr=propstr.substr(next_comma);
                        }
 
-                       if ( ! _members.setFlags(prop, set_true, set_false) )
+                       // set_member_flags will take care of case conversion
+                       if ( ! set_member_flags(prop.c_str(), set_true, 
set_false) )
                        {
                                log_warning("Can't set propflags on object "
                                        "property %s "

Index: server/as_object.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- server/as_object.h  24 Nov 2006 13:33:21 -0000      1.20
+++ server/as_object.h  25 Nov 2006 14:27:44 -0000      1.21
@@ -149,6 +149,11 @@
 
        /// Set member flags (probably used by ASSetPropFlags)
        //
+       /// @parame name
+       ///     Name of the property.
+       ///     Case insensitive up to SWF6,
+       ///     case *sensitive* from SWF7 up.
+       ///
        /// @param setTrue
        ///     the set of flags to set
        ///
@@ -177,6 +182,13 @@
        /// Set property flags
        //
        /// @param props
+       ///     A comma-delimited list of property names as a string,
+       ///     a NULL value, or an array? (need to check/test, probably
+       ///     somehting is broken).
+       ///     Property strings are case insensitive up to SWF6,
+       ///     case *sensitive* from SWF7 up.
+       ///     
+       ///
        /// @param set_false
        /// @param set_true
        ///
@@ -201,7 +213,9 @@
        /// that name (or should we allow override ? TODO: check this)
        //
        /// @param key
-       ///     name of the property. search will be case-insensitive
+       ///     Name of the property.
+       ///     Case insensitive up to SWF6,
+       ///     case *sensitive* from SWF7 up.
        ///
        /// @param getter
        ///     A function to invoke when this property value is requested.
@@ -215,10 +229,7 @@
        ///         otherwise (property already existent?)
        ///
        bool add_property(const std::string& key, as_function& getter,
-               as_function& setter)
-       {
-               return _members.addGetterSetter(key, getter, setter);
-       }
+               as_function& setter);
 
 protected:
 
@@ -239,6 +250,11 @@
        ///
        /// TODO: take a std::string rather then a tu_stringi
        ///
+       /// @parame name
+       ///     Name of the property.
+       ///     Case insensitive up to SWF6,
+       ///     case *sensitive* from SWF7 up.
+       ///
        bool get_member_default(const tu_stringi& name, as_value* val);
 
        /// Set a member value
@@ -253,6 +269,11 @@
        ///
        /// TODO: take a std::string rather then a tu_stringi
        ///
+       /// @parame name
+       ///     Name of the property.
+       ///     Case insensitive up to SWF6,
+       ///     case *sensitive* from SWF7 up.
+       ///
        void set_member_default(const tu_stringi& name, const as_value& val);
 
        /// Set this object's '__proto__' member




reply via email to

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