WebCore:
[WebKit-https.git] / WebCore / kwq / DOMTraversal.h
1 /*
2  * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 //=========================================================================
27 //=========================================================================
28 //=========================================================================
29
30 // Important Note:
31 // Though this file appears as an exported header from WebKit, the
32 // version you should edit is in WebCore. The WebKit version is copied
33 // to WebKit during the build process.
34
35 //=========================================================================
36 //=========================================================================
37 //=========================================================================
38
39 #import "DOMCore.h"
40
41 @class DOMNodeFilter;
42
43 @interface DOMNodeIterator : DOMObject
44 - (DOMNode *)root;
45 - (unsigned long)whatToShow;
46 - (DOMNodeFilter *)filter;
47 - (BOOL)expandEntityReferences;
48 - (DOMNode *)nextNode;
49 - (DOMNode *)previousNode;
50 - (void)detach;
51 @end
52
53 enum {
54     // Constants returned by acceptNode
55     DOM_FILTER_ACCEPT                  = 1,
56     DOM_FILTER_REJECT                  = 2,
57     DOM_FILTER_SKIP                    = 3,
58 };
59
60 enum {
61     // Constants for whatToShow
62     DOM_SHOW_ALL                       = 0xFFFFFFFF,
63     DOM_SHOW_ELEMENT                   = 0x00000001,
64     DOM_SHOW_ATTRIBUTE                 = 0x00000002,
65     DOM_SHOW_TEXT                      = 0x00000004,
66     DOM_SHOW_CDATA_SECTION             = 0x00000008,
67     DOM_SHOW_ENTITY_REFERENCE          = 0x00000010,
68     DOM_SHOW_ENTITY                    = 0x00000020,
69     DOM_SHOW_PROCESSING_INSTRUCTION    = 0x00000040,
70     DOM_SHOW_COMMENT                   = 0x00000080,
71     DOM_SHOW_DOCUMENT                  = 0x00000100,
72     DOM_SHOW_DOCUMENT_TYPE             = 0x00000200,
73     DOM_SHOW_DOCUMENT_FRAGMENT         = 0x00000400,
74     DOM_SHOW_NOTATION                  = 0x00000800,
75 };
76
77 @interface DOMNodeFilter : DOMObject
78 - (short)acceptNode:(DOMNode *)n;
79 @end
80
81 @interface DOMTreeWalker : DOMObject
82 - (DOMNode *)root;
83 - (unsigned long)whatToShow;
84 - (DOMNodeFilter *)filter;
85 - (BOOL)expandEntityReferences;
86 - (DOMNode *)currentNode;
87 - (void)setCurrentNode:(DOMNode *)currentNode;
88 - (DOMNode *)parentNode;
89 - (DOMNode *)firstChild;
90 - (DOMNode *)lastChild;
91 - (DOMNode *)previousSibling;
92 - (DOMNode *)nextSibling;
93 - (DOMNode *)previousNode;
94 - (DOMNode *)nextNode;
95 @end
96
97 @interface DOMDocument (DOMDocumentTraversal)
98 - (DOMNodeIterator *)createNodeIterator:(DOMNode *)root :(unsigned long)whatToShow :(DOMNodeFilter *)filter :(BOOL)entityReferenceExpansion;
99 - (DOMTreeWalker *)createTreeWalker:(DOMNode *)root :(unsigned long)whatToShow :(DOMNodeFilter *)filter :(BOOL)entityReferenceExpansion;
100 @end