Compiler.h revision 37b74a387bb3993387029859c2d9d051c41c724e
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