summaryrefslogtreecommitdiffstats
path: root/khtml/ecma/kjs_traversal.h
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/ecma/kjs_traversal.h')
-rw-r--r--khtml/ecma/kjs_traversal.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/khtml/ecma/kjs_traversal.h b/khtml/ecma/kjs_traversal.h
new file mode 100644
index 000000000..fd7e064b1
--- /dev/null
+++ b/khtml/ecma/kjs_traversal.h
@@ -0,0 +1,108 @@
+// -*- c-basic-offset: 2 -*-
+/*
+ * This file is part of the KDE libraries
+ * Copyright (C) 2001 Peter Kelly (pmk@post.com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _KJS_TRAVERSAL_H_
+#define _KJS_TRAVERSAL_H_
+
+#include "ecma/kjs_dom.h"
+#include "dom/dom2_traversal.h"
+
+namespace KJS {
+
+ class DOMNodeIterator : public DOMObject {
+ public:
+ DOMNodeIterator(ExecState *exec, DOM::NodeIterator ni);
+ ~DOMNodeIterator();
+ virtual Value tryGet(ExecState *exec,const Identifier &p) const;
+ Value getValueProperty(ExecState *exec, int token) const;
+ // no put - all read-only
+ virtual const ClassInfo* classInfo() const { return &info; }
+ static const ClassInfo info;
+ enum { Filter, Root, WhatToShow, ExpandEntityReferences,
+ NextNode, PreviousNode, Detach };
+ DOM::NodeIterator toNodeIterator() const { return nodeIterator; }
+ protected:
+ DOM::NodeIterator nodeIterator;
+ };
+
+ // Constructor object NodeFilter
+ class NodeFilterConstructor : public DOMObject {
+ public:
+ NodeFilterConstructor(ExecState *);
+ virtual Value tryGet(ExecState *exec,const Identifier &p) const;
+ Value getValueProperty(ExecState *exec, int token) const;
+ // no put - all read-only
+ virtual const ClassInfo* classInfo() const { return &info; }
+ static const ClassInfo info;
+ };
+
+ class DOMNodeFilter : public DOMObject {
+ public:
+ DOMNodeFilter(ExecState *exec, DOM::NodeFilter nf);
+ ~DOMNodeFilter();
+ // no put - all read-only
+ virtual const ClassInfo* classInfo() const { return &info; }
+ static const ClassInfo info;
+ virtual DOM::NodeFilter toNodeFilter() const { return nodeFilter; }
+ enum { AcceptNode };
+ protected:
+ DOM::NodeFilter nodeFilter;
+ };
+
+ class DOMTreeWalker : public DOMObject {
+ public:
+ DOMTreeWalker(ExecState *exec, DOM::TreeWalker tw);
+ ~DOMTreeWalker();
+ virtual Value tryGet(ExecState *exec,const Identifier &p) const;
+ Value getValueProperty(ExecState *exec, int token) const;
+ virtual void tryPut(ExecState *exec, const Identifier &propertyName,
+ const Value& value, int attr = None);
+ virtual const ClassInfo* classInfo() const { return &info; }
+ static const ClassInfo info;
+ enum { Root, WhatToShow, Filter, ExpandEntityReferences, CurrentNode,
+ ParentNode, FirstChild, LastChild, PreviousSibling, NextSibling,
+ PreviousNode, NextNode };
+ DOM::TreeWalker toTreeWalker() const { return treeWalker; }
+ protected:
+ DOM::TreeWalker treeWalker;
+ };
+
+ Value getDOMNodeIterator(ExecState *exec, DOM::NodeIterator ni);
+ Value getNodeFilterConstructor(ExecState *exec);
+ Value getDOMNodeFilter(ExecState *exec, DOM::NodeFilter nf);
+ Value getDOMTreeWalker(ExecState *exec, DOM::TreeWalker tw);
+
+ /**
+ * Convert an object to a NodeFilter. Returns a null Node if not possible.
+ */
+ DOM::NodeFilter toNodeFilter(const Value&);
+
+ class JSNodeFilter : public DOM::CustomNodeFilter {
+ public:
+ JSNodeFilter(Object & _filter);
+ virtual ~JSNodeFilter();
+ virtual short acceptNode (const DOM::Node &n);
+ protected:
+ Object filter;
+ };
+
+} // namespace
+
+#endif