• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1diff --git a/base/macros.h b/base/macros.h
2index 3064a1b..8685117 100644
3--- a/base/macros.h
4+++ b/base/macros.h
5@@ -12,6 +12,13 @@
6
7 #include <stddef.h>  // For size_t.
8
9+#if defined(ANDROID)
10+// Prefer Android's libbase definitions to our own.
11+#include <android-base/macros.h>
12+#endif  // defined(ANDROID)
13+
14+// We define following macros conditionally as they may be defined by another libraries.
15+
16 // Distinguish mips32.
17 #if defined(__mips__) && (_MIPS_SIM == _ABIO32) && !defined(__mips32__)
18 #define __mips32__
19@@ -23,23 +30,31 @@
20 #endif
21
22 // Put this in the declarations for a class to be uncopyable.
23+#if !defined(DISALLOW_COPY)
24 #define DISALLOW_COPY(TypeName) \
25   TypeName(const TypeName&) = delete
26+#endif
27
28 // Put this in the declarations for a class to be unassignable.
29+#if !defined(DISALLOW_ASSIGN)
30 #define DISALLOW_ASSIGN(TypeName) TypeName& operator=(const TypeName&) = delete
31+#endif
32
33 // Put this in the declarations for a class to be uncopyable and unassignable.
34+#if !defined(DISALLOW_COPY_AND_ASSIGN)
35 #define DISALLOW_COPY_AND_ASSIGN(TypeName) \
36   DISALLOW_COPY(TypeName);                 \
37   DISALLOW_ASSIGN(TypeName)
38+#endif
39
40 // A macro to disallow all the implicit constructors, namely the
41 // default constructor, copy constructor and operator= functions.
42 // This is especially useful for classes containing only static methods.
43+#if !defined(DISALLOW_IMPLICIT_CONSTRUCTORS)
44 #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
45   TypeName() = delete;                           \
46   DISALLOW_COPY_AND_ASSIGN(TypeName)
47+#endif
48
49 // The arraysize(arr) macro returns the # of elements in an array arr.  The
50 // expression is a compile-time constant, and therefore can be used in defining
51@@ -53,8 +68,10 @@
52 //
53 // DEPRECATED, please use base::size(array) instead.
54 // TODO(https://crbug.com/837308): Replace existing arraysize usages.
55+#if !defined(arraysize)
56 template <typename T, size_t N> char (&ArraySizeHelper(T (&array)[N]))[N];
57 #define arraysize(array) (sizeof(ArraySizeHelper(array)))
58+#endif
59
60 // Used to explicitly mark the return value of a function as unused. If you are
61 // really sure you don't want to do anything with the return value of a function
62@@ -83,8 +100,10 @@ namespace base {
63 //   return *instance;
64 // }
65 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
66+#if !defined(CR_DEFINE_STATIC_LOCAL)
67 #define CR_DEFINE_STATIC_LOCAL(type, name, arguments) \
68   static type& name = *new type arguments
69+#endif
70
71 // Workaround for MSVC, which expands __VA_ARGS__ as one macro argument. To
72 // work around this bug, wrap the entire expression in this macro...
73