[Top][All Lists]
[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/trunk r11198: asNamespace class debugging and cleanup.,
Benjamin Wolsey <=