|  | // Copyright 2014 The Bazel Authors. All rights reserved. | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //    http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | #ifndef MACROS_H__ | 
|  | #define MACROS_H__ | 
|  |  | 
|  | // GXX_EXPERIMENTAL_CXX0X is defined by gcc and clang up to at least | 
|  | // gcc-4.7 and clang-3.1 (2011-12-13).  __cplusplus was defined to 1 | 
|  | // in gcc before 4.7 and clang before 3.1, but is defined according | 
|  | // to the language version in effect thereafter. | 
|  | #if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L | 
|  | // When compiled with clang c++11 standard with warning on switch | 
|  | // fallthrough, tell the compiler not to complain when it was intended. | 
|  | #if defined(__clang__) && defined(__has_warning) | 
|  | #if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough") | 
|  | #define FALLTHROUGH_INTENDED [[clang::fallthrough]]  // NOLINT | 
|  | #endif | 
|  | #endif | 
|  | #endif | 
|  |  | 
|  |  | 
|  | #ifndef FALLTHROUGH_INTENDED | 
|  | #define FALLTHROUGH_INTENDED do { } while (0) | 
|  | #endif | 
|  |  | 
|  | #endif // MACROS_H__ |