| diff --git a/base/macros.h b/base/macros.h |
| index 3064a1b..8685117 100644 |
| --- a/base/macros.h |
| +++ b/base/macros.h |
| @@ -12,6 +12,13 @@ |
| |
| #include <stddef.h> // For size_t. |
| |
| +#if defined(ANDROID) |
| +// Prefer Android's libbase definitions to our own. |
| +#include <android-base/macros.h> |
| +#endif // defined(ANDROID) |
| + |
| +// We define following macros conditionally as they may be defined by another libraries. |
| + |
| // Distinguish mips32. |
| #if defined(__mips__) && (_MIPS_SIM == _ABIO32) && !defined(__mips32__) |
| #define __mips32__ |
| @@ -23,23 +30,31 @@ |
| #endif |
| |
| // Put this in the declarations for a class to be uncopyable. |
| +#if !defined(DISALLOW_COPY) |
| #define DISALLOW_COPY(TypeName) \ |
| TypeName(const TypeName&) = delete |
| +#endif |
| |
| // Put this in the declarations for a class to be unassignable. |
| +#if !defined(DISALLOW_ASSIGN) |
| #define DISALLOW_ASSIGN(TypeName) TypeName& operator=(const TypeName&) = delete |
| +#endif |
| |
| // Put this in the declarations for a class to be uncopyable and unassignable. |
| +#if !defined(DISALLOW_COPY_AND_ASSIGN) |
| #define DISALLOW_COPY_AND_ASSIGN(TypeName) \ |
| DISALLOW_COPY(TypeName); \ |
| DISALLOW_ASSIGN(TypeName) |
| +#endif |
| |
| // A macro to disallow all the implicit constructors, namely the |
| // default constructor, copy constructor and operator= functions. |
| // This is especially useful for classes containing only static methods. |
| +#if !defined(DISALLOW_IMPLICIT_CONSTRUCTORS) |
| #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ |
| TypeName() = delete; \ |
| DISALLOW_COPY_AND_ASSIGN(TypeName) |
| +#endif |
| |
| // The arraysize(arr) macro returns the # of elements in an array arr. The |
| // expression is a compile-time constant, and therefore can be used in defining |
| @@ -53,8 +68,10 @@ |
| // |
| // DEPRECATED, please use base::size(array) instead. |
| // TODO(https://crbug.com/837308): Replace existing arraysize usages. |
| +#if !defined(arraysize) |
| template <typename T, size_t N> char (&ArraySizeHelper(T (&array)[N]))[N]; |
| #define arraysize(array) (sizeof(ArraySizeHelper(array))) |
| +#endif |
| |
| // Used to explicitly mark the return value of a function as unused. If you are |
| // really sure you don't want to do anything with the return value of a function |
| @@ -83,8 +100,10 @@ namespace base { |
| // return *instance; |
| // } |
| // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
| +#if !defined(CR_DEFINE_STATIC_LOCAL) |
| #define CR_DEFINE_STATIC_LOCAL(type, name, arguments) \ |
| static type& name = *new type arguments |
| +#endif |
| |
| // Workaround for MSVC, which expands __VA_ARGS__ as one macro argument. To |
| // work around this bug, wrap the entire expression in this macro... |