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