mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
68 lines
3 KiB
Objective-C
Executable file
68 lines
3 KiB
Objective-C
Executable file
//
|
|
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
#import <SessionUtilitiesKit/AppContext.h>
|
|
#import <SignalCoreKit/NSObject+OWS.h>
|
|
#import <SignalCoreKit/OWSAsserts.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
#pragma mark - Singleton Asserts
|
|
|
|
// The "singleton asserts" can be used to ensure
|
|
// that we only create a singleton once.
|
|
//
|
|
// The simplest way to use them is the OWSSingletonAssert() macro.
|
|
// It is intended to be used inside the singleton's initializer.
|
|
//
|
|
// If, however, a singleton has multiple possible initializers,
|
|
// you need to:
|
|
//
|
|
// 1. Use OWSSingletonAssertFlag() outside the class definition.
|
|
// 2. Use OWSSingletonAssertInit() in each initializer.
|
|
|
|
#ifdef DEBUG
|
|
|
|
#define ENFORCE_SINGLETONS
|
|
|
|
#endif
|
|
|
|
#ifdef ENFORCE_SINGLETONS
|
|
|
|
#define OWSSingletonAssertFlag() static BOOL _isSingletonCreated = NO;
|
|
|
|
#define OWSSingletonAssertInit() \
|
|
@synchronized([self class]) { \
|
|
if (!CurrentAppContext().isRunningTests) { \
|
|
OWSAssertDebug(!_isSingletonCreated); \
|
|
_isSingletonCreated = YES; \
|
|
} \
|
|
}
|
|
|
|
#define OWSSingletonAssert() OWSSingletonAssertFlag() OWSSingletonAssertInit()
|
|
|
|
#else
|
|
|
|
#define OWSSingletonAssertFlag()
|
|
#define OWSSingletonAssertInit()
|
|
#define OWSSingletonAssert()
|
|
|
|
#endif
|
|
|
|
#define OWSFailDebugUnlessRunningTests(_messageFormat, ...) \
|
|
do { \
|
|
if (!CurrentAppContext().isRunningTests) { \
|
|
OWSFailDebug(_messageFormat, ##__VA_ARGS__); \
|
|
} \
|
|
} while (0)
|
|
|
|
#define OWSCFailDebugUnlessRunningTests(_messageFormat, ...) \
|
|
do { \
|
|
if (!CurrentAppContext().isRunningTests) { \
|
|
OWSCFailDebug(_messageFormat, ##__VA_ARGS__); \
|
|
} \
|
|
} while (NO)
|
|
|
|
|
|
NS_ASSUME_NONNULL_END
|