gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r11198: asNamespace class debugging


From: Benjamin Wolsey
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r11198: asNamespace class debugging and cleanup.
Date: Thu, 02 Jul 2009 17:46:49 +0200
User-agent: Bazaar (1.13.1)

------------------------------------------------------------
revno: 11198
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Thu 2009-07-02 17:46:49 +0200
message:
  asNamespace class debugging and cleanup.
modified:
  libcore/asNamespace.cpp
  libcore/asNamespace.h
  libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 11194.1.38
    committer: Benjamin Wolsey <address@hidden>
    branch nick: work
    timestamp: Thu 2009-07-02 15:48:42 +0200
    message:
      Clean up, add alternative lookup method for debugging / testing.
    modified:
      libcore/parser/abc_block.cpp
    ------------------------------------------------------------
    revno: 11194.1.39
    committer: Benjamin Wolsey <address@hidden>
    branch nick: work
    timestamp: Thu 2009-07-02 15:58:17 +0200
    message:
      Clean up, add dump() function for debugging.
    modified:
      libcore/asNamespace.cpp
      libcore/asNamespace.h
    ------------------------------------------------------------
    revno: 11194.1.40
    committer: Benjamin Wolsey <address@hidden>
    branch nick: work
    timestamp: Thu 2009-07-02 16:00:58 +0200
    message:
      Add namespace URI to logging.
    modified:
      libcore/asNamespace.cpp
=== modified file 'libcore/asNamespace.cpp'
--- a/libcore/asNamespace.cpp   2009-06-30 09:09:03 +0000
+++ b/libcore/asNamespace.cpp   2009-07-02 14:00:58 +0000
@@ -18,6 +18,10 @@
 #include "asNamespace.h"
 #include "VM.h"
 #include "ClassHierarchy.h"
+#include "string_table.h"
+#include "log.h"
+
+#include <sstream>
 
 namespace gnash {
 
@@ -29,4 +33,20 @@
        addClass(name, pClass);
 }
 
+void
+asNamespace::dump(string_table& st)
+{
+    std::ostringstream s;
+
+    for (container::const_iterator i = _classes.begin(), e = _classes.end();
+            i != e; ++i)
+    {
+        const string_table::key t = i->second->getName();
+        s << st.value(t) << "(" << t << "), ";
+    }
+
+    log_debug("Classes in namespace %s(%s): %s", st.value(_uri), _uri, 
s.str());
+
+}
+
 }

=== modified file 'libcore/asNamespace.h'
--- a/libcore/asNamespace.h     2009-06-30 09:09:03 +0000
+++ b/libcore/asNamespace.h     2009-07-02 13:58:17 +0000
@@ -25,6 +25,7 @@
 namespace gnash {
     class asClass;
     class ClassHierarchy;
+    class string_table;
 }
 
 namespace gnash {
@@ -38,10 +39,10 @@
        asNamespace()
         :
         _parent(0),
-        mUri(0),
+        _uri(0),
         _prefix(0),
         _abcURI(0),
-        mClasses(),
+        _classes(),
                mRecursePrevent(false),
         _private(false),
         _protected(false),
@@ -56,10 +57,10 @@
        asNamespace* getParent() { return _parent; }
 
        /// Set the uri
-       void setURI(string_table::key name) { mUri = name; }
+       void setURI(string_table::key name) { _uri = name; }
 
        /// What is the Uri of the namespace?
-       string_table::key getURI() const { return mUri; }
+       string_table::key getURI() const { return _uri; }
 
        string_table::key getAbcURI() const {return _abcURI;}
        void setAbcURI(string_table::key n){ _abcURI = n; }
@@ -72,7 +73,7 @@
        bool addClass(string_table::key name, asClass *a)
        {
                if (getClassInternal(name)) return false;
-               mClasses[static_cast<std::size_t>(name)] = a;
+               _classes[static_cast<std::size_t>(name)] = a;
                return true;
        }
 
@@ -94,6 +95,8 @@
                return found;
        }
 
+    void dump(string_table& st);
+
        void setPrivate() { _private = true; }
        void unsetPrivate() { _private = false; }
        bool isPrivate() { return _private; }
@@ -109,13 +112,13 @@
 private:
 
        asNamespace* _parent;
-       string_table::key mUri;
+       string_table::key _uri;
        string_table::key _prefix;
 
        string_table::key _abcURI;
 
        typedef std::map<string_table::key, asClass*> container;
-       container mClasses;
+       container _classes;
        mutable bool mRecursePrevent;
 
        bool _private;
@@ -126,11 +129,11 @@
        {
                container::const_iterator i;
                
-        if (mClasses.empty()) return NULL;
-
-               i = mClasses.find(name);
-
-               if (i == mClasses.end()) return NULL;
+        if (_classes.empty()) return NULL;
+
+               i = _classes.find(name);
+
+               if (i == _classes.end()) return NULL;
                return i->second;
        }
 };

=== modified file 'libcore/parser/abc_block.cpp'
--- a/libcore/parser/abc_block.cpp      2009-07-02 13:05:53 +0000
+++ b/libcore/parser/abc_block.cpp      2009-07-02 13:48:42 +0000
@@ -931,24 +931,31 @@
                        log_error(_("ABC: Out of bounds instance name."));
                        return false;
                }
-               // This must be a QName.
-               if (!_multinamePool[index].isQName())
-               {
+        
+        asName& multiname = _multinamePool[index];
+               
+        // This must be a QName.
+               if (!multiname.isQName()) {
                        log_error(_("ABC: QName required for instance."));
                        return false;
                }
-               if (_multinamePool[index].getNamespace() == NULL)
-               {
+               
+        if (!multiname.getNamespace()) {
                        log_error(_("ABC: No namespace to use for storing 
class."));
                        return false;
                }
-               pClass = locateClass(_multinamePool[index]);
-               if (!pClass)
-               {
+
+               pClass = locateClass(multiname);
+               
+        if (!pClass) {
+
+            // Shouldn't this be the global name?
+            const string_table::key className = multiname.getABCName();
+
                        pClass = mCH->newClass();
-                       if (!_multinamePool[index].getNamespace()->addClass(
-                               _multinamePool[index].getABCName(), pClass))
-                       {
+
+                       if (!multiname.getNamespace()->addClass(className, 
pClass)) {
+
                                log_error(_("Duplicate class registration."));
                                return false;
                        }
@@ -956,17 +963,16 @@
                pClass->setDeclared();
                _classes[i] = pClass;
                boost::uint32_t super_index = _stream->read_V32();;
-               if (super_index && super_index >= _multinamePool.size())
-               {
+
+               if (super_index && super_index >= _multinamePool.size()) {
                        log_error(_("ABC: Bad super type."));
                        return false;
                }
-               if (!super_index)
-               {
+
+               if (!super_index) {
                        pClass->setSuper(mTheObject);
                }
-               else
-               {
+               else {
                        asClass *pSuper = 
locateClass(_multinamePool[super_index]);
                        if (!pSuper)
                        {
@@ -1376,9 +1382,17 @@
     else {
         std::vector<std::string>::iterator it = 
             std::find(_stringPool.begin(), _stringPool.end(), className);
-        
+ 
+#if 1      
         if (it == _stringPool.end()) return 0;
         a.setABCName(it - _stringPool.begin());
+#else
+
+        if (it != _stringPool.end()) {
+            a.setABCName(it - _stringPool.begin());
+        }
+        a.setGlobalName(VM::get().getStringTable().find(className));
+#endif
     }
     
     return locateClass(a);


reply via email to

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