[M73 Dev][Tizen] Fix compilation errors for TV profile
[platform/framework/web/chromium-efl.git] / base / macros.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This file contains macros and macro-like constructs (e.g., templates) that
6 // are commonly used throughout Chromium source. (It may also contain things
7 // that are closely related to things that are commonly used that belong in this
8 // file.)
9
10 #ifndef BASE_MACROS_H_
11 #define BASE_MACROS_H_
12
13 // Put this in the declarations for a class to be uncopyable.
14 #define DISALLOW_COPY(TypeName) \
15   TypeName(const TypeName&) = delete
16
17 // Put this in the declarations for a class to be unassignable.
18 #define DISALLOW_ASSIGN(TypeName) TypeName& operator=(const TypeName&) = delete
19
20 // Put this in the declarations for a class to be uncopyable and unassignable.
21 #define DISALLOW_COPY_AND_ASSIGN(TypeName) \
22   DISALLOW_COPY(TypeName);                 \
23   DISALLOW_ASSIGN(TypeName)
24
25 // A macro to disallow all the implicit constructors, namely the
26 // default constructor, copy constructor and operator= functions.
27 // This is especially useful for classes containing only static methods.
28 #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
29   TypeName() = delete;                           \
30   DISALLOW_COPY_AND_ASSIGN(TypeName)
31
32 // Used to explicitly mark the return value of a function as unused. If you are
33 // really sure you don't want to do anything with the return value of a function
34 // that has been marked WARN_UNUSED_RESULT, wrap it with this. Example:
35 //
36 //   std::unique_ptr<MyType> my_var = ...;
37 //   if (TakeOwnership(my_var.get()) == SUCCESS)
38 //     ignore_result(my_var.release());
39 //
40 template<typename T>
41 inline void ignore_result(const T&) {
42 }
43
44 #endif  // BASE_MACROS_H_