zworld-em/Plugins/sentry-unreal/Source/ThirdParty/Mac/include/Sentry/SentryDefines.h
2025-05-11 22:07:21 +08:00

181 lines
5.8 KiB
Objective-C

#import <Foundation/Foundation.h>
#ifdef __cplusplus
# define SENTRY_EXTERN extern "C" __attribute__((visibility("default")))
#else
# define SENTRY_EXTERN extern __attribute__((visibility("default")))
#endif
#ifndef TARGET_OS_VISION
# define TARGET_OS_VISION 0
#endif
// SENTRY_UIKIT_AVAILABLE basically means: are we on a platform where we can link UIKit?
#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_VISION
# define SENTRY_UIKIT_AVAILABLE 1
#else
# define SENTRY_UIKIT_AVAILABLE 0
#endif
// SENTRY_HAS_UIKIT means we're on a platform that can link UIKit and we're building a configuration
// that will allow it to be autolinked. SENTRY_NO_UIKIT is set in GCC_PREPROCESSOR_DEFINITIONS
// for configurations that we will not allow to link UIKit by setting CLANG_MODULES_AUTOLINK to NO.
#if SENTRY_UIKIT_AVAILABLE && !SENTRY_NO_UIKIT
# define SENTRY_HAS_UIKIT 1
#else
# define SENTRY_HAS_UIKIT 0
#endif
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
# define SENTRY_TARGET_MACOS 1
#else
# define SENTRY_TARGET_MACOS 0
#endif
#if (TARGET_OS_OSX || TARGET_OS_MACCATALYST) && !SENTRY_NO_UIKIT
# define SENTRY_TARGET_MACOS_HAS_UI 1
#else
# define SENTRY_TARGET_MACOS_HAS_UI 0
#endif
#if TARGET_OS_IOS || SENTRY_TARGET_MACOS
# define SENTRY_HAS_METRIC_KIT 1
#else
# define SENTRY_HAS_METRIC_KIT 0
#endif
#if SENTRY_HAS_UIKIT && !TARGET_OS_VISION
# define SENTRY_TARGET_REPLAY_SUPPORTED 1
#else
# define SENTRY_TARGET_REPLAY_SUPPORTED 0
#endif
#define SENTRY_NO_INIT \
-(instancetype)init NS_UNAVAILABLE; \
+(instancetype) new NS_UNAVAILABLE;
#if !TARGET_OS_WATCH && !(TARGET_OS_VISION && SENTRY_NO_UIKIT == 1)
# define SENTRY_HAS_REACHABILITY 1
#else
# define SENTRY_HAS_REACHABILITY 0
#endif
@class SentryBreadcrumb;
@class SentryEvent;
@class SentrySamplingContext;
@class SentryUserFeedbackConfiguration;
@protocol SentrySpan;
/**
* Block used for returning after a request finished
*/
typedef void (^SentryRequestFinished)(NSError *_Nullable error);
/**
* Block used for request operation finished, @c shouldDiscardEvent is @c YES if event
* should be deleted regardless if an error occurred or not
*/
typedef void (^SentryRequestOperationFinished)(
NSHTTPURLResponse *_Nullable response, NSError *_Nullable error);
/**
* Block can be used to mutate a breadcrumb before it's added to the scope.
* To avoid adding the breadcrumb altogether, return @c nil instead.
*/
typedef SentryBreadcrumb *_Nullable (^SentryBeforeBreadcrumbCallback)(
SentryBreadcrumb *_Nonnull breadcrumb);
/**
* Block can be used to mutate event before its send.
* To avoid sending the event altogether, return nil instead.
*/
typedef SentryEvent *_Nullable (^SentryBeforeSendEventCallback)(SentryEvent *_Nonnull event);
/**
* Use this block to drop or modify a span before the SDK sends it to Sentry. Return @c nil to drop
* the span.
*/
typedef id<SentrySpan> _Nullable (^SentryBeforeSendSpanCallback)(id<SentrySpan> _Nonnull span);
/**
* Block can be used to decide if the SDK should capture a screenshot or not. Return @c true if the
* SDK should capture a screenshot, return @c false if not. This callback doesn't work for crashes.
*/
typedef BOOL (^SentryBeforeCaptureScreenshotCallback)(SentryEvent *_Nonnull event);
/**
* Block can be used to decide if the SDK should capture a view hierarchy or not. Return @c true if
* the SDK should capture a view hierarchy, return @c false if not. This callback doesn't work for
* crashes.
*/
typedef BOOL (^SentryBeforeCaptureViewHierarchyCallback)(SentryEvent *_Nonnull event);
/**
* A callback to be notified when the last program execution terminated with a crash.
*/
typedef void (^SentryOnCrashedLastRunCallback)(SentryEvent *_Nonnull event);
/**
* Block can be used to determine if an event should be queued and stored
* locally. It will be tried to send again after next successful send. Note that
* this will only be called once the event is created and send manually. Once it
* has been queued once it will be discarded if it fails again.
*/
typedef BOOL (^SentryShouldQueueEvent)(
NSHTTPURLResponse *_Nullable response, NSError *_Nullable error);
/**
* Function pointer for a sampler callback.
* @param samplingContext context of the sampling.
* @return A sample rate that is >= @c 0.0 and \<= @c 1.0 or @c nil if no sampling decision has
* been taken. When returning a value out of range the SDK uses the default of @c 0.
*/
typedef NSNumber *_Nullable (^SentryTracesSamplerCallback)(
SentrySamplingContext *_Nonnull samplingContext);
/**
* Function pointer for span manipulation.
* @param span The span to be used.
*/
typedef void (^SentrySpanCallback)(id<SentrySpan> _Nullable span);
/**
* Log level.
*/
typedef NS_ENUM(NSInteger, SentryLogLevel) {
kSentryLogLevelNone = 1,
kSentryLogLevelError,
kSentryLogLevelDebug,
kSentryLogLevelVerbose
};
/**
* Sentry level.
*/
typedef NS_ENUM(NSUInteger,
SentryLevel); // This is a forward declaration, the actual enum is implemented in Swift.
/**
* Static internal helper to convert enum to string.
*/
static DEPRECATED_MSG_ATTRIBUTE(
"Use nameForSentryLevel() instead.") NSString *_Nonnull const SentryLevelNames[]
= {
@"none",
@"debug",
@"info",
@"warning",
@"error",
@"fatal",
};
static NSUInteger const defaultMaxBreadcrumbs = 100;
static NSString *_Nonnull const kSentryTrueString = @"true";
static NSString *_Nonnull const kSentryFalseString = @"false";
/**
* Transaction name source.
*/
typedef NS_ENUM(NSInteger, SentryTransactionNameSource); // This is a forward declaration, the
// actual enum is implemented in Swift.