source: webkit/trunk/JavaScriptCore/wtf/OwnPtrCommon.h@ 44842

Last change on this file since 44842 was 44095, checked in by [email protected], 16 years ago

Part 1 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr

<https://bugs.webkit.org/show_bug.cgi?id=25495>

Reviewed by Oliver Hunt.

JavaScriptCore:

  • GNUmakefile.am: Added OwnPtrCommon.h and PassOwnPtr.h.
  • JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
  • JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
  • wtf/OwnPtr.h: (WTF::OwnPtr::OwnPtr): Added constructors that take a PassOwnPtr. Also added a copy constructor declaration that's required when assigning a PassOwnPtr to a stack-based OwnPtr. (WTF::operator=): Added assignment operator methods that take a PassOwnPtr. (WTF::swap): Reformatted. (WTF::operator==): Whitespace changes. (WTF::operator!=): Ditto.
  • wtf/OwnPtrCommon.h: Added. (WTF::deleteOwnedPtr):
  • wtf/PassOwnPtr.h: Added. (WTF::PassOwnPtr::PassOwnPtr): (WTF::PassOwnPtr::~PassOwnPtr): (WTF::PassOwnPtr::get): (WTF::PassOwnPtr::clear): (WTF::PassOwnPtr::release): (WTF::PassOwnPtr::operator*): (WTF::PassOwnPtr::operator->): (WTF::PassOwnPtr::operator!): (WTF::PassOwnPtr::operator UnspecifiedBoolType): (WTF::::operator): (WTF::operator==): (WTF::operator!=): (WTF::static_pointer_cast): (WTF::const_pointer_cast): (WTF::getPtr):

JavaScriptGlue:

  • ForwardingHeaders/wtf/OwnPtrCommon.h: Added.
  • ForwardingHeaders/wtf/PassOwnPtr.h: Added.

WebCore:

  • ForwardingHeaders/wtf/OwnPtrCommon.h: Added.
  • ForwardingHeaders/wtf/PassOwnPtr.h: Added.
  • WebCore.vcproj/WebCore.vcproj: Added OwnPtrCommon.h and PassOwnPtr.h.

WebKit/mac:

  • ForwardingHeaders/wtf/OwnPtrCommon.h: Added.
  • ForwardingHeaders/wtf/PassOwnPtr.h: Added.

WebKitTools:

  • DumpRenderTree/ForwardingHeaders/wtf/OwnPtrCommon.h: Added.
  • DumpRenderTree/ForwardingHeaders/wtf/PassOwnPtr.h: Added.
File size: 2.0 KB
Line 
1/*
2 * Copyright (C) 2009 Apple 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 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 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#ifndef WTF_OwnPtrCommon_h
27#define WTF_OwnPtrCommon_h
28
29#if PLATFORM(WIN)
30typedef struct HBITMAP__* HBITMAP;
31typedef struct HBRUSH__* HBRUSH;
32typedef struct HFONT__* HFONT;
33typedef struct HPALETTE__* HPALETTE;
34typedef struct HPEN__* HPEN;
35typedef struct HRGN__* HRGN;
36#endif
37
38namespace WTF {
39
40 template <typename T> inline void deleteOwnedPtr(T* ptr)
41 {
42 typedef char known[sizeof(T) ? 1 : -1];
43 if (sizeof(known))
44 delete ptr;
45 }
46
47#if PLATFORM(WIN)
48 void deleteOwnedPtr(HBITMAP);
49 void deleteOwnedPtr(HBRUSH);
50 void deleteOwnedPtr(HFONT);
51 void deleteOwnedPtr(HPALETTE);
52 void deleteOwnedPtr(HPEN);
53 void deleteOwnedPtr(HRGN);
54#endif
55
56} // namespace WTF
57
58#endif // WTF_OwnPtrCommon_h
Note: See TracBrowser for help on using the repository browser.