1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- * Tencent is pleased to support the open source community by making wwsearch
- * available.
- *
- * Copyright (C) 2018-present Tencent. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * https://opensource.org/licenses/Apache-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
- #pragma once
- #include <functional>
- namespace wwsearch {
- class FuncScopeGuard {
- public:
- explicit FuncScopeGuard(std::function<void()> on_exit_scope)
- : on_exit_scope_(on_exit_scope), dismissed_(false) {}
- FuncScopeGuard(FuncScopeGuard const&) = delete;
- FuncScopeGuard& operator=(const FuncScopeGuard&) = delete;
- virtual ~FuncScopeGuard() {
- if (!dismissed_) {
- on_exit_scope_();
- }
- }
- void Dismiss() { dismissed_ = true; }
- private:
- std::function<void()> on_exit_scope_;
- bool dismissed_;
- };
- } // namespace wwsearch
|