| OLD | NEW | 
|   1 // Copyright 2015 The Chromium Authors. All rights reserved. |   1 // Copyright 2017 The Chromium Authors. All rights reserved. | 
|   2 // Use of this source code is governed by a BSD-style license that can be |   2 // Use of this source code is governed by a BSD-style license that can be | 
|   3 // found in the LICENSE file. |   3 // found in the LICENSE file. | 
|   4  |   4  | 
|   5 #ifndef ConditionalDestructor_h |   5 #include "platform/wtf/ConditionalDestructor.h" | 
|   6 #define ConditionalDestructor_h |  | 
|   7  |   6  | 
|   8 namespace WTF { |   7 // The contents of this header was moved to platform/wtf as part of | 
|   9  |   8 // WTF migration project. See the following post for details: | 
|  10 // ConditionalDestructor defines the destructor of the derived object. |   9 // https://groups.google.com/a/chromium.org/d/msg/blink-dev/tLdAZCTlcAA/bYXVT8gY
    CAAJ | 
|  11 // This base is used in order to completely avoid creating a destructor |  | 
|  12 // for an object that does not need to be destructed. By doing so, |  | 
|  13 // the clang compiler will have correct information about whether or not |  | 
|  14 // the object has a trivial destructor. |  | 
|  15 // Note: the derived object MUST release all its recources at the finalize() |  | 
|  16 // method. |  | 
|  17 template <typename Derived, bool noDestructor> |  | 
|  18 class ConditionalDestructor { |  | 
|  19  public: |  | 
|  20   ~ConditionalDestructor() { static_cast<Derived*>(this)->finalize(); } |  | 
|  21 }; |  | 
|  22  |  | 
|  23 template <typename Derived> |  | 
|  24 class ConditionalDestructor<Derived, true> {}; |  | 
|  25  |  | 
|  26 }  // namespace WTF |  | 
|  27  |  | 
|  28 #endif  // ConditionalDestructor_h |  | 
| OLD | NEW |