blob: d75f700191bcb266734c0989ae28c6449ee4fb42 [file] [log] [blame]
Carl Shapiro6c21dc12011-06-20 15:20:52 -07001// Copyright 2010 Google
2// Licensed under the Apache License, Version 2.0 (the "License");
3// you may not use this file except in compliance with the License.
4// You may obtain a copy of the License at
5//
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14#ifndef SRC_MACROS_H_
15#define SRC_MACROS_H_
16
17// DISALLOW_COPY_AND_ASSIGN disallows the copy and operator= functions.
18// It goes in the private: declarations in a class.
19#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
20 TypeName(const TypeName&); \
21 void operator=(const TypeName&)
22
23// A macro to disallow all the implicit constructors, namely the
24// default constructor, copy constructor and operator= functions.
25//
26// This should be used in the private: declarations for a class
27// that wants to prevent anyone from instantiating it. This is
28// especially useful for classes containing only static methods.
29#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
30 TypeName(); \
31 DISALLOW_COPY_AND_ASSIGN(TypeName)
32
33#endif // SRC_MACROS_H_