[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