| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef OSP_IMPL_WITH_DESTRUCTION_CALLBACK_H_ |
| #define OSP_IMPL_WITH_DESTRUCTION_CALLBACK_H_ |
| |
| #include "platform/base/macros.h" |
| |
| namespace openscreen { |
| namespace osp { |
| |
| // A decoration for classes which allows a callback to be run just after |
| // destruction. Setting the callback is optional. |
| class WithDestructionCallback { |
| public: |
| using DestructionCallbackFunctionPointer = void (*)(void*); |
| |
| WithDestructionCallback(); |
| ~WithDestructionCallback(); |
| |
| // Sets the function to be called from the destructor. |
| void SetDestructionCallback(DestructionCallbackFunctionPointer function, |
| void* state); |
| |
| private: |
| DestructionCallbackFunctionPointer destruction_callback_function_ = nullptr; |
| void* destruction_callback_state_ = nullptr; |
| |
| OSP_DISALLOW_COPY_AND_ASSIGN(WithDestructionCallback); |
| }; |
| |
| } // namespace osp |
| } // namespace openscreen |
| |
| #endif // OSP_IMPL_WITH_DESTRUCTION_CALLBACK_H_ |