2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2006 James G. Speth (speth@end.com)
4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 // This is lets our internals access DOMObject's _internal field while having
29 // it be private for clients outside WebKit.
30 #define private public
34 #import "DOMNodeFilter.h"
35 #import "DOMXPathNSResolver.h"
36 #import <wtf/Forward.h>
38 #import <Foundation/NSMapTable.h>
50 class XPathNSResolver
;
52 #if ENABLE(TOUCH_EVENTS)
57 @interface DOMNodeFilter
: DOMObject
<DOMNodeFilter
>
61 @interface DOMNativeXPathNSResolver
: DOMObject
<DOMXPathNSResolver
>
63 #endif // ENABLE(XPATH)
65 // Helper functions for DOM wrappers and gluing to Objective-C
67 // Create an NSMapTable mapping from pointers to ObjC objects held with zeroing weak references.
68 NSMapTable
* createWrapperCache();
69 NSMapTable
* createWrapperCacheWithIntegerKeys(); // Same, but from integers to ObjC objects.
71 id
createDOMWrapper(JSC::JSObject
*, PassRefPtr
<JSC::Bindings::RootObject
> origin
, PassRefPtr
<JSC::Bindings::RootObject
> current
);
73 NSObject
* getDOMWrapper(DOMObjectInternal
*);
74 void addDOMWrapper(NSObject
* wrapper
, DOMObjectInternal
*);
75 void removeDOMWrapper(DOMObjectInternal
*);
77 template <class Source
>
78 inline id
getDOMWrapper(Source impl
)
80 return getDOMWrapper(reinterpret_cast<DOMObjectInternal
*>(impl
));
83 template <class Source
>
84 inline void addDOMWrapper(NSObject
* wrapper
, Source impl
)
86 addDOMWrapper(wrapper
, reinterpret_cast<DOMObjectInternal
*>(impl
));
89 DOMNodeFilter
*kit(WebCore::NodeFilter
*);
90 WebCore::NodeFilter
* core(DOMNodeFilter
*);
93 DOMNativeXPathNSResolver
*kit(WebCore::XPathNSResolver
*);
94 WebCore::XPathNSResolver
* core(DOMNativeXPathNSResolver
*);
95 #endif // ENABLE(XPATH)