|  | // 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 PDFIUM_THIRD_PARTY_BASE_MACROS_H_ | 
|  | #define PDFIUM_THIRD_PARTY_BASE_MACROS_H_ | 
|  |  | 
|  | // The COMPILE_ASSERT macro can be used to verify that a compile time | 
|  | // expression is true. For example, you could use it to verify the | 
|  | // size of a static array: | 
|  | // | 
|  | //   COMPILE_ASSERT(ARRAYSIZE_UNSAFE(content_type_names) == CONTENT_NUM_TYPES, | 
|  | //                  content_type_names_incorrect_size); | 
|  | // | 
|  | // or to make sure a struct is smaller than a certain size: | 
|  | // | 
|  | //   COMPILE_ASSERT(sizeof(foo) < 128, foo_too_large); | 
|  | // | 
|  | // The second argument to the macro is the name of the variable. If | 
|  | // the expression is false, most compilers will issue a warning/error | 
|  | // containing the name of the variable. | 
|  |  | 
|  | #undef COMPILE_ASSERT | 
|  | #define COMPILE_ASSERT(expr, msg) static_assert(expr, #msg) | 
|  |  | 
|  | #endif  // PDFIUM_THIRD_PARTY_BASE_MACROS_H_ |