• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Android Open Source Project
2 //
3 // This software is licensed under the terms of the GNU General Public
4 // License version 2, as published by the Free Software Foundation, and
5 // may be copied, distributed, and modified under those terms.
6 //
7 // This program is distributed in the hope that it will be useful,
8 // but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 // GNU General Public License for more details.
11 
12 #pragma once
13 
14 // Use this inside a class declaration to ensure that the corresponding objects
15 // cannot be copy-constructed or assigned. For example:
16 //
17 //   class Foo {
18 //       ....
19 //       DISALLOW_COPY_AND_ASSIGN(Foo)
20 //       ....
21 //   };
22 //
23 // Note: this macro is sometimes defined in 3rd-party libs, so let's check first
24 #ifndef DISALLOW_COPY_AND_ASSIGN
25 
26 #define DISALLOW_COPY_AND_ASSIGN(T) \
27     T(const T& other) = delete; \
28     T& operator=(const T& other) = delete
29 
30 #endif
31 
32 #ifndef DISALLOW_COPY_ASSIGN_AND_MOVE
33 
34 #define DISALLOW_COPY_ASSIGN_AND_MOVE(T) \
35     DISALLOW_COPY_AND_ASSIGN(T); \
36     T(T&&) = delete; \
37     T& operator=(T&&) = delete
38 
39 #endif
40