// // ASConfigurationInternal.h // Texture // // Copyright (c) Pinterest, Inc. All rights reserved. // Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0 // /// Note this has to be public because it's imported by public header ASThread.h =/ /// It will be private again after exp_unfair_lock ends. #import #import NS_ASSUME_NONNULL_BEGIN /** * Quickly check if an experiment is enabled and notify the delegate * that it's been activated. * * The delegate will be notified asynchronously. */ #if DEBUG #define ASActivateExperimentalFeature(opt) _ASActivateExperimentalFeature(opt) #else #define ASActivateExperimentalFeature(opt) ({\ static BOOL result;\ static dispatch_once_t onceToken;\ dispatch_once(&onceToken, ^{ result = _ASActivateExperimentalFeature(opt); });\ result;\ }) #endif /** * Internal function. Use the macro without the underbar. */ AS_EXTERN BOOL _ASActivateExperimentalFeature(ASExperimentalFeatures option); /** * Notify the configuration delegate that the framework initialized, if needed. */ AS_EXTERN void ASNotifyInitialized(void); AS_SUBCLASSING_RESTRICTED @interface ASConfigurationManager : NSObject /** * No API for now. * Just use ASActivateExperimentalFeature to access this efficiently. */ /* Exposed for testing purposes only */ + (void)test_resetWithConfiguration:(nullable ASConfiguration *)configuration; @end NS_ASSUME_NONNULL_END