dfx 0.1.0
Linux-based dynamic dataflow executor
Loading...
Searching...
No Matches
CopyMoveControl.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Vincent Leroy
2// SPDX-License-Identifier: MIT
3//
4// This file is part of dfx.
5//
6// Licensed under the MIT License. See the LICENSE file in the project root
7// for full license information.
8
9#pragma once
10
25
27#define DISABLE_COPY(ClassName) \
28 ClassName(ClassName const &) = delete; \
29 ClassName & operator=(ClassName const &) = delete
30
32#define DISABLE_MOVE(ClassName) \
33 ClassName(ClassName &&) = delete; \
34 ClassName & operator=(ClassName &&) = delete
35
37#define DISABLE_COPY_AND_MOVE(ClassName) \
38 DISABLE_COPY(ClassName); \
39 DISABLE_MOVE(ClassName)
40
42#define ENABLE_DEFAULT_COPY(ClassName) \
43 ClassName(ClassName const &) = default; \
44 ClassName & operator=(ClassName const &) = default
45
47#define ENABLE_DEFAULT_COPY_NOEXCEPT(ClassName) \
48 ClassName(ClassName const &) noexcept = default; \
49 ClassName & operator=(ClassName const &) noexcept = default
50
52#define ENABLE_DEFAULT_MOVE(ClassName) \
53 ClassName(ClassName &&) = default; \
54 ClassName & operator=(ClassName &&) = default
55
57#define ENABLE_DEFAULT_MOVE_NOEXCEPT(ClassName) \
58 ClassName(ClassName &&) noexcept = default; \
59 ClassName & operator=(ClassName &&) noexcept = default
60
62#define ENABLE_DEFAULT_COPY_AND_MOVE(ClassName) \
63 ENABLE_DEFAULT_COPY(ClassName); \
64 ENABLE_DEFAULT_MOVE(ClassName)
65
67#define ENABLE_DEFAULT_COPY_AND_MOVE_NOEXCEPT(ClassName) \
68 ENABLE_DEFAULT_COPY_NOEXCEPT(ClassName); \
69 ENABLE_DEFAULT_MOVE_NOEXCEPT(ClassName)
70
72#define ENABLE_DEFAULT_MOVE_DISABLE_COPY(ClassName) \
73 ENABLE_DEFAULT_MOVE(ClassName); \
74 DISABLE_COPY(ClassName)
75
77#define ENABLE_DEFAULT_MOVE_DISABLE_COPY_NOEXCEPT(ClassName) \
78 ENABLE_DEFAULT_MOVE_NOEXCEPT(ClassName); \
79 DISABLE_COPY(ClassName)