| // Copyright (c) 2017 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. | 
 |  | 
 | // Provides the definition of API_AVAILABLE while we're on an SDK that doesn't | 
 | // contain it yet. | 
 | // TODO(thakis): Remove this file once we're on the 10.12 SDK. | 
 |  | 
 | #ifndef BASE_MAC_AVAILABILITY_H_ | 
 | #define BASE_MAC_AVAILABILITY_H_ | 
 |  | 
 | #include <AvailabilityMacros.h> | 
 |  | 
 | #if !defined(MAC_OS_X_VERSION_10_12) || \ | 
 |     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12 | 
 | #define __API_AVAILABLE_PLATFORM_macos(x) macos, introduced = x | 
 | #define __API_AVAILABLE_PLATFORM_macosx(x) macosx, introduced = x | 
 | #define __API_AVAILABLE_PLATFORM_ios(x) ios, introduced = x | 
 | #define __API_AVAILABLE_PLATFORM_watchos(x) watchos, introduced = x | 
 | #define __API_AVAILABLE_PLATFORM_tvos(x) tvos, introduced = x | 
 | #define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x))) | 
 | #define __API_AVAILABLE1(x) __API_A(x) | 
 | #define __API_AVAILABLE2(x, y) __API_A(x) __API_A(y) | 
 | #define __API_AVAILABLE3(x, y, z) __API_A(x) __API_A(y) __API_A(z) | 
 | #define __API_AVAILABLE4(x, y, z, t) __API_A(x) __API_A(y) __API_A(z) __API_A(t) | 
 | #define __API_AVAILABLE_GET_MACRO(_1, _2, _3, _4, NAME, ...) NAME | 
 | #define API_AVAILABLE(...)                                                   \ | 
 |   __API_AVAILABLE_GET_MACRO(__VA_ARGS__, __API_AVAILABLE4, __API_AVAILABLE3, \ | 
 |                             __API_AVAILABLE2, __API_AVAILABLE1)              \ | 
 |   (__VA_ARGS__) | 
 | #else | 
 | #import <os/availability.h> | 
 | #endif  // MAC_OS_X_VERSION_10_12 | 
 |  | 
 | #endif  // BASE_MAC_AVAILABILITY_H_ |