Created
January 5, 2022 12:38
-
-
Save mczernek/e64c9e84d0b1872401796d670add765f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright (c) Facebook, Inc. and its affiliates. | |
* | |
* This source code is licensed under the MIT license found in the | |
* LICENSE file in the root directory of this source tree. | |
*/ | |
#if __OBJC__ | |
#import <Foundation/Foundation.h> | |
#endif | |
/** | |
* Make global functions usable in C++ | |
*/ | |
#if defined(__cplusplus) | |
#define RCT_EXTERN extern "C" __attribute__((visibility("default"))) | |
#define RCT_EXTERN_C_BEGIN extern "C" { | |
#define RCT_EXTERN_C_END } | |
#else | |
#define RCT_EXTERN extern __attribute__((visibility("default"))) | |
#define RCT_EXTERN_C_BEGIN | |
#define RCT_EXTERN_C_END | |
#endif | |
/** | |
* The RCT_DEBUG macro can be used to exclude error checking and logging code | |
* from release builds to improve performance and reduce binary size. | |
*/ | |
#ifndef RCT_DEBUG | |
#if DEBUG | |
#define RCT_DEBUG 1 | |
#else | |
#define RCT_DEBUG 0 | |
#endif | |
#endif | |
/** | |
* The RCT_DEV macro can be used to enable or disable development tools | |
* such as the debug executors, dev menu, red box, etc. | |
*/ | |
#ifndef RCT_DEV | |
#if DEBUG | |
#define RCT_DEV 1 | |
#else | |
#define RCT_DEV 0 | |
#endif | |
#endif | |
/** | |
* RCT_DEV_MENU can be used to toggle the dev menu separately from RCT_DEV. | |
* By default though, it will inherit from RCT_DEV. | |
*/ | |
#ifndef RCT_DEV_MENU | |
#define RCT_DEV_MENU RCT_DEV | |
#endif | |
#ifndef RCT_ENABLE_INSPECTOR | |
#if RCT_DEV && __has_include(<React/RCTInspectorDevServerHelper.h>) | |
#define RCT_ENABLE_INSPECTOR 1 | |
#else | |
#define RCT_ENABLE_INSPECTOR 0 | |
#endif | |
#endif | |
#ifndef ENABLE_PACKAGER_CONNECTION | |
#if RCT_DEV && (__has_include("RCTPackagerConnection.h") || __has_include(<React/RCTPackagerConnection.h>)) | |
#define ENABLE_PACKAGER_CONNECTION 1 | |
#else | |
#define ENABLE_PACKAGER_CONNECTION 1 | |
#endif | |
#endif | |
#if RCT_DEV | |
#define RCT_IF_DEV(...) __VA_ARGS__ | |
#else | |
#define RCT_IF_DEV(...) | |
#endif | |
#ifndef RCT_PROFILE | |
#define RCT_PROFILE RCT_DEV | |
#endif | |
/** | |
* Add the default Metro packager port number | |
*/ | |
#ifndef RCT_METRO_PORT | |
#define RCT_METRO_PORT 8081 | |
#else | |
// test if RCT_METRO_PORT is empty | |
#define RCT_METRO_PORT_DO_EXPAND(VAL) VAL##1 | |
#define RCT_METRO_PORT_EXPAND(VAL) RCT_METRO_PORT_DO_EXPAND(VAL) | |
#if !defined(RCT_METRO_PORT) || (RCT_METRO_PORT_EXPAND(RCT_METRO_PORT) == 1) | |
// Only here if RCT_METRO_PORT is not defined | |
// OR RCT_METRO_PORT is the empty string | |
#undef RCT_METRO_PORT | |
#define RCT_METRO_PORT 8081 | |
#endif | |
#endif | |
/** | |
* Add the default packager name | |
*/ | |
#ifndef RCT_PACKAGER_NAME | |
#define RCT_PACKAGER_NAME @"Metro" | |
#endif | |
/** | |
* By default, only raise an NSAssertion in debug mode | |
* (custom assert functions will still be called). | |
*/ | |
#ifndef RCT_NSASSERT | |
#define RCT_NSASSERT RCT_DEBUG | |
#endif | |
/** | |
* Concat two literals. Supports macro expansions, | |
* e.g. RCT_CONCAT(foo, __FILE__). | |
*/ | |
#define RCT_CONCAT2(A, B) A##B | |
#define RCT_CONCAT(A, B) RCT_CONCAT2(A, B) | |
/** | |
* This attribute is used for static analysis. | |
*/ | |
#if !defined RCT_DYNAMIC | |
#if __has_attribute(objc_dynamic) | |
#define RCT_DYNAMIC __attribute__((objc_dynamic)) | |
#else | |
#define RCT_DYNAMIC | |
#endif | |
#endif | |
/** | |
* Throw an assertion for unimplemented methods. | |
*/ | |
#define RCT_NOT_IMPLEMENTED(method) \ | |
_Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wmissing-method-return-type\"") \ | |
_Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \ | |
RCT_EXTERN NSException *_RCTNotImplementedException(SEL, Class); \ | |
method NS_UNAVAILABLE \ | |
{ \ | |
@throw _RCTNotImplementedException(_cmd, [self class]); \ | |
} \ | |
_Pragma("clang diagnostic pop") | |
/** | |
* Check if WebKit iOS 10.0 APIs are available. | |
*/ | |
#define WEBKIT_IOS_10_APIS_AVAILABLE __has_include(<WebKit/WKAudiovisualMediaTypes.h>) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment