MiniOB
1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
src
common
lang
defer.h
1
/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
2
miniob is licensed under Mulan PSL v2.
3
You can use this software according to the terms and conditions of the Mulan PSL v2.
4
You may obtain a copy of Mulan PSL v2 at:
5
http://license.coscl.org.cn/MulanPSL2
6
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
7
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
8
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
9
See the Mulan PSL v2 for more details. */
10
11
//
12
// Created by Wangyunlai on 2022/07/08.
13
//
14
15
#pragma once
16
17
#include "common/lang/functional.h"
18
19
namespace
common {
20
21
class
DeferHelper
22
{
23
public
:
24
DeferHelper
(
const
function<
void
()> defer) : defer_(std::move(defer)) {}
25
26
~DeferHelper
()
27
{
28
if
(defer_) {
29
defer_();
30
}
31
}
32
33
private
:
34
const
function<void()> defer_;
35
};
36
37
}
// namespace common
38
39
#define _SCOPE_UNIQUE_NAME(B, C) B##C
40
41
#define SCOPE_UNIQUE_NAME(B) _SCOPE_UNIQUE_NAME(B, __LINE__)
42
43
#define DEFER(...) common::DeferHelper SCOPE_UNIQUE_NAME(defer_helper_)([&]() { __VA_ARGS__; })
common::DeferHelper
Definition:
defer.h:22
制作者
1.9.5