DOMInternal.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  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)
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  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.
  14. *
  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.
  26. */
  27. // This is lets our internals access DOMObject's _internal field while having
  28. // it be private for clients outside WebKit.
  29. #define private public
  30. #import "DOMObject.h"
  31. #undef private
  32. #import "DOMNodeFilter.h"
  33. #import "DOMXPathNSResolver.h"
  34. #import <wtf/Forward.h>
  35. namespace JSC {
  36. class JSObject;
  37. namespace Bindings {
  38. class RootObject;
  39. }
  40. }
  41. namespace WebCore {
  42. class NodeFilter;
  43. class XPathNSResolver;
  44. }
  45. @interface DOMNodeFilter : DOMObject <DOMNodeFilter>
  46. @end
  47. @interface DOMNativeXPathNSResolver : DOMObject <DOMXPathNSResolver>
  48. @end
  49. // Helper functions for DOM wrappers and gluing to Objective-C
  50. // Create an NSMapTable mapping from pointers to ObjC objects held with zeroing weak references.
  51. NSMapTable* createWrapperCache();
  52. id createDOMWrapper(JSC::JSObject*, PassRefPtr<JSC::Bindings::RootObject> origin, PassRefPtr<JSC::Bindings::RootObject> current);
  53. NSObject* getDOMWrapper(DOMObjectInternal*);
  54. void addDOMWrapper(NSObject* wrapper, DOMObjectInternal*);
  55. void removeDOMWrapper(DOMObjectInternal*);
  56. template <class Source>
  57. inline id getDOMWrapper(Source impl)
  58. {
  59. return getDOMWrapper(reinterpret_cast<DOMObjectInternal*>(impl));
  60. }
  61. template <class Source>
  62. inline void addDOMWrapper(NSObject* wrapper, Source impl)
  63. {
  64. addDOMWrapper(wrapper, reinterpret_cast<DOMObjectInternal*>(impl));
  65. }
  66. DOMNodeFilter *kit(WebCore::NodeFilter*);
  67. WebCore::NodeFilter* core(DOMNodeFilter *);
  68. DOMNativeXPathNSResolver *kit(WebCore::XPathNSResolver*);
  69. WebCore::XPathNSResolver* core(DOMNativeXPathNSResolver *);
  70. inline NSTimeInterval kit(double msSinceEpoch)
  71. {
  72. return msSinceEpoch / 1000.0 - NSTimeIntervalSince1970;
  73. }
  74. inline double core(NSTimeInterval sec)
  75. {
  76. return sec * 1000.0 + NSTimeIntervalSince1970;
  77. }