[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdenonbeta/kdom
From:       Frans Englich <frans.englich () telia ! com>
Date:       2005-09-30 21:12:02
Message-ID: 1128114722.046705.26383.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 465792 by englich:

Committing the bits & pieces:

* Remove the KDT namespace from Namespace.h, it's possible to prolong anonymous types \
                a bit longer.
* Add displayPrefix() helper to Helper.h
* Add kddebugstream & qHash operators/functions to DOMString, and remove from kdom.h
* Qt 4 port NodeImpl.h
* Make TypeInfo an ABC
* Make TreeShared a public virtual of Shared. I don't know Wildfox's opinion on that \
right now, but it can be that way until his templatification patch is applied(makes \
my life easier)

These are all changes mentioned in the ksvg-devel thread except making DOMStringImpl \
& TypeInfo a public virtual of Shared; and that TreeShared is temporarily a public \
virtual. So, how to solve this MI/TreeShared problem still needs a better suggestion, \
in case the public virtualness isn't of interest.



 M  +23 -1     DOMString.cpp  
 M  +19 -0     DOMString.h  
 M  +17 -0     Helper.cpp  
 M  +20 -0     Helper.h  
 M  +1 -2      Shared.cpp  
 M  +4 -0      Shared.h  
 M  +2 -2      TreeShared.h  
 M  +9 -9      core/NodeImpl.h  
 M  +1 -19     core/TypeInfoImpl.cpp  
 M  +3 -4      core/TypeInfoImpl.h  
 M  +0 -5      kdom.h  


--- trunk/kdenonbeta/kdom/DOMString.cpp #465791:465792
@@ -23,6 +23,8 @@
     Boston, MA 02111-1307, USA.
 */
 
+#include <QHash>
+
 #include "DOMString.h"
 #include "DOMStringImpl.h"
 
@@ -322,7 +324,7 @@
 
 bool KDOM::operator==(const DOMString &a, const QString &b)
 {
-    unsigned int l = a.length();
+    int l = a.length();
 
     if(l != b.length())
         return false;
@@ -354,4 +356,24 @@
     return !*b;
 }
 
+uint qHash(const KDOM::DOMString &str)
+{
+	const QChar *p = str.unicode();
+	int n = str.length();
+	uint h = 0;
+	uint g;
+	
+	while(n--)
+	{
+		h = (h << 4) + (*p++).unicode();
+
+		if((g = (h & 0xf0000000)) != 0)
+			h ^= g >> 23;
+
+		h &= ~g;
+	}
+
+	return h;
+}
+
 // vim:ts=4:noet
--- trunk/kdenonbeta/kdom/DOMString.h #465791:465792
@@ -28,6 +28,9 @@
 
 #include <qstring.h>
 
+class kdbgstream;
+class kndbgstream;
+
 namespace KDOM
 {
     class DOMStringImpl;
@@ -110,8 +113,24 @@
     // returns false when equal, true otherwise (ignoring case)
     bool strcasecmp(const DOMString &a, const DOMString &b);
     bool strcasecmp(const DOMString &a, const char *b);
+
+    // Debugging helper
+#ifndef APPLE_CHANGES
+    inline kndbgstream &operator<<(kndbgstream &stream, const DOMString &string)
+        { return (stream << string.string()); }
+#endif
+    inline kdbgstream  &operator<<(kdbgstream  &stream, const DOMString &string)
+        { return (stream << string.string()); }
 };
 
+/**
+ * Function for creating hash values from KDOM::DOMString instances.
+ * This function is used by Qt's dictionary class QHash.
+ *
+ * @see QHash
+ */
+uint qHash(const KDOM::DOMString &str);
+
 #endif
 
 // vim:ts=4:noet
--- trunk/kdenonbeta/kdom/Helper.cpp #465791:465792
@@ -483,4 +483,21 @@
     return r;
 }
 
+DOMString Helper::displayPrefix(const DOMString &ns)
+{
+	if(ns == NS_WXS)
+		return DOMString("xs");
+	else if(ns == NS_XDT)
+		return DOMString("xdt");
+	else if(ns == NS_XFN)
+		return DOMString("fn");
+	else if(ns == NS_XPERR)
+		return DOMString("xqt");
+	else
+	{
+		kdDebug(26000) << k_funcinfo << " Unhandled prefix: " << ns.string() << endl;
+		return DOMString();
+	}
+}
+
 // vim:ts=4:noet
--- trunk/kdenonbeta/kdom/Helper.h #465791:465792
@@ -217,6 +217,26 @@
          */
         static DOMStringImpl *parseURL(DOMStringImpl *url);
 
+		/**
+		 * Returns a conventional prefix for @p namespaceURI. This can be used
+		 * for error reporting.
+		 *
+		 * An example:
+		 * \code
+		 * KDOM::DOMString prefix = Helper::DisplayPrefix(NS_WXS);
+		 * // prefix == "xs"
+		 * \endcode
+		 *
+		 * Handled namespaces are the W3C XML Schema, XPath Data Types, XPath Functions, \
and +		 * XQuery Errors namespace.
+		 *
+		 * @note Null may be returned if there exists no conventional prefix for @p \
namespaceURI. +		 * @author Frans Englich <frans.englich@telia.com>
+		 * @param namespaceURI the namespace to return a conventional prefix for. An empty
+		 * string is returned if the namespace is not handled.
+		 */
+		static DOMString displayPrefix(const DOMString &namespaceURI);
+
         /**
          * Take a string like "1,2,3,4" and returns an array of those lengths.
          * Contains work arounds to fix strings like "1,2px 3 ,4"  because
--- trunk/kdenonbeta/kdom/Shared.cpp #465791:465792
@@ -24,9 +24,8 @@
 
 using namespace KDOM;
 
-Shared::Shared()
+Shared::Shared() : m_ref(0)
 {
-    m_ref = 0;
 }
 
 Shared::~Shared()
--- trunk/kdenonbeta/kdom/Shared.h #465791:465792
@@ -25,9 +25,13 @@
 
 namespace KDOM
 {
+	template<typename T> class SharedPtr;
+
     class Shared
     {
     public:
+		typedef SharedPtr<Shared> Ptr;
+
         Shared();
         virtual ~Shared();
 
--- trunk/kdenonbeta/kdom/TreeShared.h #465791:465792
@@ -27,10 +27,10 @@
 
 namespace KDOM
 {
-    template<class T> class TreeShared : public Shared
+    template<class T> class TreeShared : public virtual Shared
     {
     public:
-        TreeShared() : Shared() { m_parent = 0; }
+        TreeShared() : m_parent(0) { }
         virtual ~TreeShared() { }
 
         void setParent(T *parent) { m_parent = parent; }
--- trunk/kdenonbeta/kdom/core/NodeImpl.h #465791:465792
@@ -42,16 +42,16 @@
 class KURL;
 
 // Helpers
-const Q_UINT16 noNamespace = 0;
-const Q_UINT16 anyNamespace = 0xffff;
-const Q_UINT16 xhtmlNamespace = 1;
-const Q_UINT16 anyLocalName = 0xffff;
+const quint16 noNamespace = 0;
+const quint16 anyNamespace = 0xffff;
+const quint16 xhtmlNamespace = 1;
+const quint16 anyLocalName = 0xffff;
 
-inline Q_UINT16 localNamePart(Q_UINT32 id) { return id & NodeImpl_IdLocalMask; }
-inline Q_UINT16 namespacePart(Q_UINT32 id) { return (((unsigned int)id) & \
                NodeImpl_IdNSMask) >> 16; }
-inline Q_UINT32 makeId(Q_UINT16 n, Q_UINT16 l) { return (n << 16) | l; }
+inline quint16 localNamePart(quint32 id) { return id & NodeImpl_IdLocalMask; }
+inline quint16 namespacePart(quint32 id) { return (id & NodeImpl_IdNSMask) >> 16; }
+inline quint32 makeId(quint16 n, quint16 l) { return (n << 16) | l; }
 
-const Q_UINT32 anyQName = makeId(anyNamespace, anyLocalName);
+const quint32 anyQName = makeId(anyNamespace, anyLocalName);
 
 namespace KDOM
 {
@@ -205,7 +205,7 @@
 
         virtual NodeImpl *addChild(NodeImpl *newChild);
 
-        typedef Q_UINT32 Id;
+        typedef quint32 Id;
 
         virtual Id id() const { return 0; }
         Id localId() const;
--- trunk/kdenonbeta/kdom/core/TypeInfoImpl.cpp #465791:465792
@@ -23,7 +23,7 @@
 
 using namespace KDOM;
 
-TypeInfoImpl::TypeInfoImpl() : Shared()
+TypeInfoImpl::TypeInfoImpl()
 {
 }
 
@@ -31,22 +31,4 @@
 {
 }
 
-DOMStringImpl *TypeInfoImpl::typeName() const
-{
-    // FIXME!
-    return 0;
-}
-
-DOMStringImpl *TypeInfoImpl::typeNamespace() const
-{
-    // FIXME!
-    return 0;
-}
-
-bool TypeInfoImpl::isDerivedFrom(DOMStringImpl *, DOMStringImpl *, unsigned long) \
                const
-{
-    // FIXME!
-    return false;
-}
-
 // vim:ts=4:noet
--- trunk/kdenonbeta/kdom/core/TypeInfoImpl.h #465791:465792
@@ -23,7 +23,6 @@
 #define KDOM_TypeInfoImpl_H
 
 #include <kdom/Shared.h>
-#include <kdom/ecma/DOMLookup.h>
 
 namespace KDOM
 {
@@ -36,12 +35,12 @@
         TypeInfoImpl();
         virtual ~TypeInfoImpl();
 
-        virtual DOMStringImpl *typeName() const;
-        virtual DOMStringImpl *typeNamespace() const;
+        virtual DOMStringImpl *typeName() const = 0;
+        virtual DOMStringImpl *typeNamespace() const = 0;
         
         virtual bool isDerivedFrom(DOMStringImpl *typeNamespaceArg,
                                    DOMStringImpl *typeNameArg,
-                                   unsigned long derivationMethod) const;
+                                   unsigned long derivationMethod) const = 0;
     };
 };
 
--- trunk/kdenonbeta/kdom/kdom.h #465791:465792
@@ -137,11 +137,6 @@
     #define isTextNode(n) (n->nodeType() == KDOM::TEXT_NODE)
     #define isImplicitNode(n) (false) // TODO: check that when khtml2 is ready
 
-    // Debugging helper
-#ifndef APPLE_CHANGES
-    inline kndbgstream &operator<<(kndbgstream &stream, const DOMString &string) { \
                return (stream << string.string()); }
-#endif
-    inline kdbgstream  &operator<<(kdbgstream  &stream, const DOMString &string) { \
return (stream << string.string()); }  };
 
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic