1 //===- Compiler.h ---------------------------------------------------------===// 2 // 3 // The MCLinker Project 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 #ifndef MCLD_SUPPORT_COMPILER_H_ 10 #define MCLD_SUPPORT_COMPILER_H_ 11 12 #include <llvm/Support/Compiler.h> 13 14 // DISALLOW_COPY_AND_ASSIGN disallows the copy and operator= functions. It goes 15 // in the private: declarations in a class. 16 #define DISALLOW_COPY_AND_ASSIGN(TypeName) \ 17 TypeName(const TypeName&) = delete; \ 18 void operator=(const TypeName&) = delete 19 20 // A macro to disallow all the implicit constructors, namely the default 21 // constructor, copy constructor and operator= functions. 22 // 23 // This should be used in the private: declarations for a class that wants to 24 // prevent anyone from instantiating it. This is especially useful for classes 25 // containing only static methods. 26 #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ 27 TypeName() = delete; \ 28 DISALLOW_COPY_AND_ASSIGN(TypeName) 29 30 #endif // MCLD_SUPPORT_COMPILER_H_ 31