00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef _KJS_TRAVERSAL_H_
00022
#define _KJS_TRAVERSAL_H_
00023
00024
#include "ecma/kjs_dom.h"
00025
#include "dom/dom2_traversal.h"
00026
00027
namespace KJS {
00028
00029
class DOMNodeIterator :
public DOMObject {
00030
public:
00031 DOMNodeIterator(ExecState *exec,
DOM::NodeIterator ni);
00032 ~DOMNodeIterator();
00033
virtual Value tryGet(ExecState *exec,
const Identifier &p)
const;
00034 Value getValueProperty(ExecState *exec,
int token)
const;
00035
00036
virtual const ClassInfo* classInfo()
const {
return &info; }
00037
static const ClassInfo info;
00038
enum { Filter, Root, WhatToShow, ExpandEntityReferences,
00039 NextNode, PreviousNode, Detach };
00040
DOM::NodeIterator toNodeIterator()
const {
return nodeIterator; }
00041
protected:
00042
DOM::NodeIterator nodeIterator;
00043 };
00044
00045
00046
class NodeFilterConstructor :
public DOMObject {
00047
public:
00048 NodeFilterConstructor(ExecState *);
00049
virtual Value tryGet(ExecState *exec,
const Identifier &p)
const;
00050 Value getValueProperty(ExecState *exec,
int token)
const;
00051
00052
virtual const ClassInfo* classInfo()
const {
return &info; }
00053
static const ClassInfo info;
00054 };
00055
00056
class DOMNodeFilter :
public DOMObject {
00057
public:
00058 DOMNodeFilter(ExecState *exec,
DOM::NodeFilter nf);
00059 ~DOMNodeFilter();
00060
00061
virtual const ClassInfo* classInfo()
const {
return &info; }
00062
static const ClassInfo info;
00063
virtual DOM::NodeFilter toNodeFilter()
const {
return nodeFilter; }
00064
enum { AcceptNode };
00065
protected:
00066
DOM::NodeFilter nodeFilter;
00067 };
00068
00069
class DOMTreeWalker :
public DOMObject {
00070
public:
00071 DOMTreeWalker(ExecState *exec,
DOM::TreeWalker tw);
00072 ~DOMTreeWalker();
00073
virtual Value tryGet(ExecState *exec,
const Identifier &p)
const;
00074 Value getValueProperty(ExecState *exec,
int token)
const;
00075
virtual void tryPut(ExecState *exec,
const Identifier &propertyName,
00076
const Value& value,
int attr = None);
00077
virtual const ClassInfo* classInfo()
const {
return &info; }
00078
static const ClassInfo info;
00079
enum { Root, WhatToShow, Filter, ExpandEntityReferences, CurrentNode,
00080 ParentNode, FirstChild, LastChild, PreviousSibling, NextSibling,
00081 PreviousNode, NextNode };
00082
DOM::TreeWalker toTreeWalker()
const {
return treeWalker; }
00083
protected:
00084
DOM::TreeWalker treeWalker;
00085 };
00086
00087 Value getDOMNodeIterator(ExecState *exec,
DOM::NodeIterator ni);
00088 Value getNodeFilterConstructor(ExecState *exec);
00089 Value getDOMNodeFilter(ExecState *exec,
DOM::NodeFilter nf);
00090 Value getDOMTreeWalker(ExecState *exec,
DOM::TreeWalker tw);
00091
00095
DOM::NodeFilter toNodeFilter(
const Value&);
00096
00097
class JSNodeFilter :
public DOM::
CustomNodeFilter {
00098
public:
00099 JSNodeFilter(Object & _filter);
00100
virtual ~JSNodeFilter();
00101
virtual short acceptNode (
const DOM::Node &n);
00102
protected:
00103 Object filter;
00104 };
00105
00106 }
00107
00108
#endif