| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // This file contains macros and macro-like constructs (e.g., templates) that | 
 | // are commonly used throughout Chromium source. (It may also contain things | 
 | // that are closely related to things that are commonly used that belong in this | 
 | // file.) | 
 |  | 
 | #ifndef BASE_MACROS_H_ | 
 | #define BASE_MACROS_H_ | 
 |  | 
 | // Distinguish mips32. | 
 | #if defined(__mips__) && (_MIPS_SIM == _ABIO32) && !defined(__mips32__) | 
 | #define __mips32__ | 
 | #endif | 
 |  | 
 | // Distinguish mips64. | 
 | #if defined(__mips__) && (_MIPS_SIM == _ABI64) && !defined(__mips64__) | 
 | #define __mips64__ | 
 | #endif | 
 |  | 
 | // Put this in the declarations for a class to be uncopyable. | 
 | #define DISALLOW_COPY(TypeName) TypeName(const TypeName&) = delete | 
 |  | 
 | // Put this in the declarations for a class to be unassignable. | 
 | #define DISALLOW_ASSIGN(TypeName) TypeName& operator=(const TypeName&) = delete | 
 |  | 
 | // Put this in the declarations for a class to be uncopyable and unassignable. | 
 | #define DISALLOW_COPY_AND_ASSIGN(TypeName) \ | 
 |   DISALLOW_COPY(TypeName);                 \ | 
 |   DISALLOW_ASSIGN(TypeName) | 
 |  | 
 | // 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. | 
 | #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ | 
 |   TypeName() = delete;                           \ | 
 |   DISALLOW_COPY_AND_ASSIGN(TypeName) | 
 |  | 
 | // 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 | 
 | // that has been marked WARN_UNUSED_RESULT, wrap it with this. Example: | 
 | // | 
 | //   std::unique_ptr<MyType> my_var = ...; | 
 | //   if (TakeOwnership(my_var.get()) == SUCCESS) | 
 | //     ignore_result(my_var.release()); | 
 | // | 
 | template <typename T> | 
 | inline void ignore_result(const T&) {} | 
 |  | 
 | #endif  // BASE_MACROS_H_ |