blob: 95c25907e9fa52839de43ce329ae6973126f9206 [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
Carl Shapiro806defa2011-06-20 15:54:50 -070014#ifndef ART_MACROS_H_
15#define ART_MACROS_H_
Carl Shapiro6c21dc12011-06-20 15:20:52 -070016
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
Carl Shapiro59e85cd2011-06-21 10:16:23 -070033#define SIZEOF_MEMBER(t, f) sizeof(((t*) 4096)->f)
34
35#define OFFSETOF_MEMBER(t, f) \
36 (reinterpret_cast<char*>( \
37 &reinterpret_cast<t*>(16)->f) - \
38 reinterpret_cast<char*>(16))
39
Carl Shapiro806defa2011-06-20 15:54:50 -070040#endif // ART_MACROS_H_