[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_object.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_object.cpp |
Date: |
Thu, 05 Oct 2006 16:05:02 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 06/10/05 16:05:02
Modified files:
. : ChangeLog
server : as_object.cpp
Log message:
* server/as_object.cpp (setPropFlags): added support for
property arg being a comma-separated list string, minor
cleanups to reduce memory copies.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1042&r2=1.1043
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.10&r2=1.11
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1042
retrieving revision 1.1043
diff -u -b -r1.1042 -r1.1043
--- ChangeLog 5 Oct 2006 16:03:36 -0000 1.1042
+++ ChangeLog 5 Oct 2006 16:05:01 -0000 1.1043
@@ -1,3 +1,9 @@
+2006-10-05 Sandro Santilli <address@hidden>
+
+ * server/as_object.cpp (setPropFlags): added support for
+ property arg being a comma-separated list string, minor
+ cleanups to reduce memory copies.
+
2006-10-05 Markus Gothe <address@hidden>
* libbase/log.cpp: Added #define BOOST_HAS_THREADS.
Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- server/as_object.cpp 4 Oct 2006 14:46:35 -0000 1.10
+++ server/as_object.cpp 5 Oct 2006 16:05:02 -0000 1.11
@@ -201,6 +201,47 @@
void
as_object::setPropFlags(as_value& props_val, int set_false, int set_true)
{
+ if ( props_val.get_type() == as_value::STRING )
+ {
+ std::string propstr = props_val.to_string();
+ for(;;)
+ {
+ std::string prop;
+ size_t next_comma=propstr.find(",");
+ if ( next_comma == std::string::npos )
+ {
+ prop=propstr;
+ }
+ else
+ {
+ prop=propstr.substr(0,next_comma);
+ propstr=propstr.substr(next_comma);
+ }
+
+ stringi_hash<as_member>::iterator it = \
+ m_members.find(prop.c_str());
+ if ( it != m_members.end() )
+ {
+ as_member& member = it->second;
+ as_prop_flags f = member.get_member_flags();
+ f.set_flags(set_true, set_false);
+ member.set_member_flags(f);
+ }
+ else
+ {
+ log_warning("Unknown object property %s, "
+ "can't set propflags on it", prop.c_str());
+ }
+
+
+ if ( next_comma == std::string::npos )
+ {
+ break;
+ }
+ }
+ return;
+ }
+
as_object* props = props_val.to_object();
// Evan: it seems that if set_true == 0 and set_false == 0,
@@ -220,41 +261,31 @@
// Take all the members of the object
- stringi_hash<as_member>::const_iterator it = m_members.begin();
+ stringi_hash<as_member>::iterator it = m_members.begin();
while (it != m_members.end())
{
- as_member member = it->second;
-
+ as_member& member = it->second;
as_prop_flags f = member.get_member_flags();
- f.get_flags();
f.set_flags(set_true, set_false);
member.set_member_flags(f);
-
- // why don't we directly set flags on the
- // actual member instead ?
- m_members[it->first] = member;
-
++it;
}
+ // Are we sure we need to descend to __proto__ ?
+ // should we recurse then ?
+
if (m_prototype != NULL)
{
- const as_object* prototype = m_prototype;
+ as_object* prototype = m_prototype;
it = prototype->m_members.begin();
while (it != prototype->m_members.end())
{
- as_member member = it->second;
-
+ as_member& member = it->second;
as_prop_flags f = member.get_member_flags();
- //const int oldflags =
- f.get_flags();
- //const int newflags =
f.set_flags(set_true, set_false);
member.set_member_flags(f);
- m_members[it->first] = member;
-
++it;
}
}
@@ -271,13 +302,11 @@
if (it2 != m_members.end())
{
- as_member member = it2->second;
+ as_member& member = it2->second;
as_prop_flags f = member.get_member_flags();
- f.get_flags();
f.set_flags(set_true, set_false);
member.set_member_flags(f);
-
m_members[it->second.get_member_value().to_string()] = member;
}
++it;