[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_environment.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_environment.cpp |
Date: |
Mon, 15 Oct 2007 09:40:09 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/10/15 09:40:08
Modified files:
. : ChangeLog
server : as_environment.cpp
Log message:
* server/as_environment.cpp: minor cleanups.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4609&r2=1.4610
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.cpp?cvsroot=gnash&r1=1.96&r2=1.97
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4609
retrieving revision 1.4610
diff -u -b -r1.4609 -r1.4610
--- ChangeLog 15 Oct 2007 09:06:59 -0000 1.4609
+++ ChangeLog 15 Oct 2007 09:40:06 -0000 1.4610
@@ -1,5 +1,9 @@
2007-10-14 Sandro Santilli <address@hidden>
+ * server/as_environment.cpp: minor cleanups.
+
+2007-10-14 Sandro Santilli <address@hidden>
+
* backend/render_handler_agg.{cpp,h} (agg_detect_pixel_format):
return by const char*, fixing a warning raised by gcc 4.2.1
* gui/gtk_glue_agg.cpp: update use of agg_detect_pixel_format.
Index: server/as_environment.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_environment.cpp,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -b -r1.96 -r1.97
--- server/as_environment.cpp 14 Oct 2007 21:38:11 -0000 1.96
+++ server/as_environment.cpp 15 Oct 2007 09:40:07 -0000 1.97
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: as_environment.cpp,v 1.96 2007/10/14 21:38:11 strk Exp $ */
+/* $Id: as_environment.cpp,v 1.97 2007/10/15 09:40:07 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -40,6 +40,9 @@
// Define this to have find_target() calls trigger debugging output
//#define DEBUG_TARGET_FINDING 1
+// Define this to have get_variable() calls trigger debugging output
+//#define GNASH_DEBUG_GET_VARIABLE 1
+
namespace gnash {
// Return the value of the given var, if it's defined.
@@ -50,9 +53,14 @@
// Path lookup rigamarole.
std::string path;
std::string var;
- //log_msg(_("get_variable(%s)"), varname.c_str());
+
+#ifdef GNASH_DEBUG_GET_VARIABLE
+ log_debug(_("get_variable(%s)"), varname.c_str());
+#endif
+
bool is_slash_based;
- if (parse_path(varname, path, var, &is_slash_based)) {
+ if (parse_path(varname, path, var, &is_slash_based))
+ {
//as_value target_val = get_variable_raw(path, scopeStack);
//as_object* target = target_val.to_object();
// TODO: let find_target return generic as_objects, or use 'with' stack,
@@ -60,18 +68,20 @@
// @@ TODO: should we use scopeStack here too ?
as_object* target = is_slash_based ? find_object_slashsyntax(path) :
find_object_dotsyntax(path);
- if (target) {
+ if (target)
+ {
as_value val;
target->get_member(VM::get().getStringTable().find(var), &val);
if ( retTarget ) *retTarget = target;
return val;
- } else {
+ }
+ else
+ {
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("find_object%s(\"%s\") [ varname = '%s' - current
target = '%s' ] failed"),
is_slash_based ? "_slashsyntax" : "_dotsyntax",
- path.c_str(),
- varname.c_str(),
+ path.c_str(), varname.c_str(),
m_target->get_text_value().c_str()
);
);
@@ -80,12 +90,15 @@
if ( ! tmp.is_undefined() )
{
IF_VERBOSE_ASCODING_ERRORS(
- log_aserror(_("...but get_variable_raw(%s, <scopeStack>)
succeeded (%s)!"), path.c_str(), tmp.to_debug_string().c_str());
+ log_aserror(_("...but get_variable_raw(%s, <scopeStack>)
succeeded (%s)!"),
+ path.c_str(), tmp.to_debug_string().c_str());
)
}
return as_value();
}
- } else {
+ }
+ else
+ {
return get_variable_raw(varname, scopeStack, retTarget);
}
}
@@ -120,6 +133,7 @@
if (obj && obj->get_member(key, &val))
{
// Found the var in with context.
+ //log_debug("Found %s in object %d/%d of scope stack (%p)",
varname.c_str(), i, scopeStack.size(), obj);
if ( retTarget ) *retTarget = obj;
return val;
}
@@ -630,7 +644,10 @@
log_msg(_("find_object_dotsyntax(%s) called"), path.c_str());
#endif
- if (path.length() <= 0) {
+ VM& vm = VM::get();
+
+ if ( path.empty() )
+ {
#ifdef DEBUG_TARGET_FINDING
log_msg(_("Returning m_target (empty path)"));
#endif
@@ -643,26 +660,21 @@
as_object* env = m_target;
assert(env);
- if ( path.empty() ) {
-#ifdef DEBUG_TARGET_FINDING
- log_msg(_("Null path, returning m_target"));
-#endif
- return env;
- }
-
const char* p = path.c_str();
unsigned int depth=0; // number of iterations
while (env)
{
const char* next_dot = find_next_dot(p); // TODO: use std::string::find
std::string subpart = p;
- if (next_dot == p) {
+ if (next_dot == p)
+ {
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("invalid path '%s'"), path.c_str());
);
return NULL; // TODO: check me
- //break;
- } else if (next_dot) {
+ }
+ else if (next_dot)
+ {
// Cut off the slash and everything after it.
subpart.resize(next_dot - p);
}
@@ -675,16 +687,17 @@
if ( subpart.empty() )
{
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("No more subparts, env is %p"), (void*)env);
+ log_debug(_("No more subparts, env is %p"), (void*)env);
#endif
break;
}
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("Invoking get_member(%s) on object %p"), subpart.c_str(),
(void *)env);
+ log_debug(_("Invoking get_member(%s) on object %p"), subpart.c_str(),
(void *)env);
#endif
+
as_value tmp;
- string_table::key subpartkey = VM::get().getStringTable().find(subpart);
+ string_table::key subpartkey = vm.getStringTable().find(subpart);
// TODO: make sure sprite_instances know about ".."
if (!env->get_member(subpartkey, &tmp) )
@@ -704,7 +717,7 @@
{
tmp.set_as_object(m_target);
}
- else if ( ! VM::get().getGlobal()->get_member(subpartkey, &tmp)
)
+ else if ( ! vm.getGlobal()->get_member(subpartkey, &tmp) )
{
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("Element '%s' of variable '%s' not found
in object %p nor in _global (dotsyntax)"),
@@ -715,11 +728,13 @@
}
// Debugging only:
- if ( ! tmp.is_object() ) {
+ if ( ! tmp.is_object() )
+ {
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("Member %s of object %p doesn't cast to an Object
(%s) "
"evaluating target path %s (dotsyntax)"),
- subpart.c_str(), (void *)env,
tmp.to_debug_string().c_str(), path.c_str());
+ subpart.c_str(), (void *)env, tmp.to_debug_string().c_str(),
+ path.c_str());
);
return NULL;
}
@@ -732,13 +747,15 @@
//@@ _level0 --> root, .. --> parent, . --> this, other == character
- if (next_dot == NULL) {
+ if (next_dot == NULL)
+ {
break;
}
p = next_dot + 1;
++depth;
}
+
return env;
}
@@ -749,63 +766,71 @@
log_msg(_("find_object_slashsyntax(%s) called"), path.c_str());
#endif
- if (path.length() <= 0) {
+ if ( path.empty() )
+ {
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("Returning m_target (empty path)"));
+ log_debug(_("Returning m_target (empty path)"));
#endif
return m_target;
}
- // we'd have returned m_target in this case
- //assert(path.length() > 0);
-
as_object* env = m_target;
assert(env);
const char* p = path.c_str();
- if (*p == '/') {
+ if (*p == '/')
+ {
// Absolute path. Start at the *absolute* root.
// TODO: should this be VM::get().getRoot().get_root_movie() ?
env = m_target->get_root_movie();
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("Absolute path, start at the root (%p)"), (void*)env);
+ log_debug(_("Absolute path, start at the root (%p)"), (void*)env);
#endif
p++;
}
- if (*p == '\0') {
+ if (*p == '\0')
+ {
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("Null path, returning m_target"));
+ log_msg(_("Slash-only path, returning root movie"));
#endif
+ assert(path=="/");
+ assert(env == m_target->get_root_movie());
return env;
}
+ VM& vm = VM::get();
+
unsigned int depth=0; // number of iterations
- while (env) {
+ while (env)
+ {
std::string subpart;
const char* next_slash = find_next_slash(p); // TODO: use
std::string::find
subpart = p;
- if (next_slash == p) {
+ if (next_slash == p)
+ {
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("invalid path '%s'"), path.c_str());
);
return NULL; // TODO: check me
- //break;
- } else if (next_slash) {
+ }
+ else if (next_slash)
+ {
// Cut off the slash and everything after it.
+ // TODO: optimize by using offsets in the original string
subpart.resize(next_slash - p);
}
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("Subpart == %s"), subpart.c_str());
+ log_debug(_("Subpart == %s"), subpart.c_str());
#endif
// No more components to scan
if ( subpart.empty() )
{
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("No more subparts, env is %p"), (void*)env);
+ log_debug(_("No more subparts, env is %p"), (void*)env);
#endif
break;
}
@@ -813,7 +838,8 @@
if ( subpart == ".." )
{
character* ch = dynamic_cast<character*>(env);
- if ( ! ch ) {
+ if ( ! ch )
+ {
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("'..' element in path '%s' follows a
non-character object %p"),
path.c_str(), (void *)env);
@@ -824,9 +850,12 @@
if ( ! env ) // root movie doesn't have a parent
{
IF_VERBOSE_ASCODING_ERRORS(
- log_aserror(_("'..' in path '%s' follows a character
with no parent (%s : %p) (root is %p)"),
- path.c_str(),
ch->get_text_value().c_str(), (void *)ch, (void
*)VM::get().getRoot().get_root_movie());
+ log_aserror(_("'..' in path '%s' follows a character "
+ "with no parent (%s : %p) (root is %p)"),
+ path.c_str(), ch->get_text_value().c_str(), (void *)ch,
+ (void *)vm.getRoot().get_root_movie());
);
+
// if we override env, getvariable.as fails [line 57]
//env = ch;
}
@@ -835,10 +864,10 @@
{
#ifdef DEBUG_TARGET_FINDING
- log_msg(_("Invoking get_member(%s) on object %p"),
subpart.c_str(), (void *)env);
+ log_debug(_("Invoking get_member(%s) on object %p"),
subpart.c_str(), (void *)env);
#endif
as_value tmp;
- string_table::key subpartkey =
VM::get().getStringTable().find(subpart);
+ string_table::key subpartkey =
vm.getStringTable().find(subpart);
// TODO: make sure sprite_instances know about ".."
if (!env->get_member(subpartkey, &tmp) )
{
@@ -858,7 +887,7 @@
tmp.set_as_object(m_target);
}
- else if (!VM::get().getGlobal()->get_member(subpartkey,
&tmp) )
+ else if (!vm.getGlobal()->get_member(subpartkey, &tmp) )
{
IF_VERBOSE_ASCODING_ERRORS(
log_aserror(_("Element '%s' of variable '%s'
not found in object %p nor in _global (slashsyntax)"),
@@ -869,11 +898,14 @@
}
// Debugging only:
- if ( ! tmp.is_object() ) {
+ if ( ! tmp.is_object() )
+ {
IF_VERBOSE_ASCODING_ERRORS(
- log_aserror(_("Member %s of object %p doesn't cast to
an Object (%s) "
- "evaluating target path %s (slashsyntax)"),
- subpart.c_str(), (void *)env,
tmp.to_debug_string().c_str(), path.c_str());
+ log_aserror(_("Member %s of object %p doesn't cast "
+ "to an Object (%s) evaluating target path %s "
+ "(slashsyntax)"),
+ subpart.c_str(), (void *)env,
+ tmp.to_debug_string().c_str(), path.c_str());
);
return NULL;
}
@@ -886,7 +918,8 @@
//@@ _level0 --> root, .. --> parent, . --> this, other == character
- if (next_slash == NULL) {
+ if (next_slash == NULL)
+ {
break;
}