gnash-commit
[Top][All Lists]
Advanced

[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;
        }
        




reply via email to

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