Reviewed, tweaked, landed by Darin.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 28 Mar 2006 19:07:58 +0000 (19:07 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 28 Mar 2006 19:07:58 +0000 (19:07 +0000)
        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8023
          Attribute.h missing class predeclaration

        * dom/Attribute.h: Add declarations for classes so that the friend
        declaration is not the only one. There's an issue with either an earlier
        or later version of gcc, which is why we see this only on certain platforms.

        * dom/Attr.cpp:
        (WebCore::Attr::Attr):
        (WebCore::Attr::~Attr):
        * dom/NamedAttrMap.cpp:
        (WebCore::NamedAttrMap::clearAttributes):
        (WebCore::NamedAttrMap::addAttribute):
        (WebCore::NamedAttrMap::removeAttribute):
        Change places where practical to use attr() instead of m_impl in the vain
        hope of removing the need for the friend declarations.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@13533 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/dom/Attr.cpp
WebCore/dom/Attribute.h
WebCore/dom/NamedAttrMap.cpp

index b0225d3abb290d68133365f73b86cfc4fb8c3362..d988d84069668ad0af7c1f2be0742361e1b0fd9d 100644 (file)
@@ -1,3 +1,24 @@
+2006-03-28  Michael Emmel  <mike.emmel@gmail.com>
+
+        Reviewed, tweaked, landed by Darin.
+
+        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8023
+          Attribute.h missing class predeclaration
+
+        * dom/Attribute.h: Add declarations for classes so that the friend
+        declaration is not the only one. There's an issue with either an earlier
+        or later version of gcc, which is why we see this only on certain platforms.
+
+        * dom/Attr.cpp:
+        (WebCore::Attr::Attr):
+        (WebCore::Attr::~Attr):
+        * dom/NamedAttrMap.cpp:
+        (WebCore::NamedAttrMap::clearAttributes):
+        (WebCore::NamedAttrMap::addAttribute):
+        (WebCore::NamedAttrMap::removeAttribute):
+        Change places where practical to use attr() instead of m_impl in the vain
+        hope of removing the need for the friend declarations.
+
 2006-03-27  Eric Seidel  <eseidel@apple.com>
 
         Reviewed by darin.
index a8e35cd830a601543e7172812012f5aee10aefaa..e893d05aa8ac91fff0057403baa3a111a938b160 100644 (file)
@@ -38,14 +38,14 @@ Attr::Attr(Element* element, Document* docPtr, Attribute* a)
       m_attribute(a),
       m_ignoreChildrenChanged(0)
 {
-    assert(!m_attribute->m_impl);
+    assert(!m_attribute->attr());
     m_attribute->m_impl = this;
     m_specified = true;
 }
 
 Attr::~Attr()
 {
-    assert(m_attribute->m_impl == this);
+    assert(m_attribute->attr() == this);
     m_attribute->m_impl = 0;
 }
 
index 4f29ad929e9f4dc10957c196807accc91e7f65e4..4d8b8715d005e3f86acdbc92ec322c2d7668775b 100644 (file)
 
 namespace WebCore {
 
+class Attr;
 class CSSStyleDeclaration;
+class Element;
+class NamedAttrMap;
 
 // this has no counterpart in DOM, purely internal
 // representation of the nodevalue of an Attr.
@@ -41,10 +44,9 @@ class CSSStyleDeclaration;
 // is only allocated on demand by the DOM bindings.
 // Any use of Attr inside khtml should be avoided.
 class Attribute : public Shared<Attribute> {
-    friend class NamedAttrMap;
-    friend class Element;
     friend class Attr;
-
+    friend class Element;
+    friend class NamedAttrMap;
 public:
     // null value is forbidden !
     Attribute(const QualifiedName& name, const AtomicString& value)
@@ -65,7 +67,7 @@ public:
     const QualifiedName& name() const { return m_name; }
     
     Attr* attr() const { return m_impl; }
-    PassRefPtr<Attr> createAttrIfNeeded(Element* e);
+    PassRefPtr<Attr> createAttrIfNeeded(Element*);
 
     bool isNull() const { return m_value.isNull(); }
     bool isEmpty() const { return m_value.isEmpty(); }
index 14f9d51f08ae22ef5077b440597c2dbbf83b997b..0caac9374549903a29084161e55c7500d3d0593e 100644 (file)
@@ -185,8 +185,8 @@ void NamedAttrMap::clearAttributes()
 {
     if (attrs) {
         for (unsigned i = 0; i < len; i++) {
-            if (attrs[i]->m_impl)
-                attrs[i]->m_impl->m_element = 0;
+            if (attrs[i]->attr())
+                attrs[i]->attr()->m_element = 0;
             attrs[i]->deref();
         }
         fastFree(attrs);
@@ -252,7 +252,7 @@ void NamedAttrMap::addAttribute(Attribute *attribute)
     attrs[len++] = attribute;
     attribute->ref();
 
-    Attr * const attr = attribute->m_impl;
+    Attr * const attr = attribute->attr();
     if (attr)
         attr->m_element = element;
 
@@ -282,8 +282,8 @@ void NamedAttrMap::removeAttribute(const QualifiedName& name)
 
     // Remove the attribute from the list
     Attribute* attr = attrs[index];
-    if (attrs[index]->m_impl)
-        attrs[index]->m_impl->m_element = 0;
+    if (attrs[index]->attr())
+        attrs[index]->attr()->m_element = 0;
     if (len == 1) {
         fastFree(attrs);
         attrs = 0;