xref: /xnu-10002.41.9/EXTERNAL_HEADERS/CoreEntitlements/Result.h (revision 699cd48037512bf4380799317ca44ca453c82f57)
1*699cd480SApple OSS Distributions //
2*699cd480SApple OSS Distributions //  Result.h
3*699cd480SApple OSS Distributions //  CoreEntitlements
4*699cd480SApple OSS Distributions //
5*699cd480SApple OSS Distributions 
6*699cd480SApple OSS Distributions #ifndef CORE_ENTITLEMENTS_RESULT_H
7*699cd480SApple OSS Distributions #define CORE_ENTITLEMENTS_RESULT_H
8*699cd480SApple OSS Distributions 
9*699cd480SApple OSS Distributions #ifndef _CE_INDIRECT
10*699cd480SApple OSS Distributions #error "Please include <CoreEntitlements/CoreEntitlements.h> instead of this file"
11*699cd480SApple OSS Distributions #endif
12*699cd480SApple OSS Distributions 
13*699cd480SApple OSS Distributions #include <sys/cdefs.h>
14*699cd480SApple OSS Distributions __ptrcheck_abi_assume_single();
15*699cd480SApple OSS Distributions 
16*699cd480SApple OSS Distributions #include <CoreEntitlements/Errors.h>
17*699cd480SApple OSS Distributions #include <stdint.h>
18*699cd480SApple OSS Distributions 
19*699cd480SApple OSS Distributions /*!
20*699cd480SApple OSS Distributions  * @function CEErrorPassThrough
21*699cd480SApple OSS Distributions  * Returns its argument. Convenient breakpoint location for when anything raises an error.
22*699cd480SApple OSS Distributions  */
CEErrorPassThrough(CEError_t E)23*699cd480SApple OSS Distributions static inline CEError_t CEErrorPassThrough(CEError_t E) {
24*699cd480SApple OSS Distributions     return E;
25*699cd480SApple OSS Distributions }
26*699cd480SApple OSS Distributions 
27*699cd480SApple OSS Distributions /*!
28*699cd480SApple OSS Distributions  * @function CE_CHECK
29*699cd480SApple OSS Distributions  * Checks if the passed in return value from one of CoreEntitlements function is an error, and if so returns that error in the current function
30*699cd480SApple OSS Distributions  */
31*699cd480SApple OSS Distributions #define CE_CHECK(ret) do { CEError_t _ce_error = ret; if (_ce_error != kCENoError) {return CEErrorPassThrough(_ce_error);} } while(0)
32*699cd480SApple OSS Distributions 
33*699cd480SApple OSS Distributions /*!
34*699cd480SApple OSS Distributions  * @function CE_THROW
35*699cd480SApple OSS Distributions  * Macro to "throw" (return) one of the CEErrors
36*699cd480SApple OSS Distributions  */
37*699cd480SApple OSS Distributions #define CE_THROW(err) return CEErrorPassThrough(err)
38*699cd480SApple OSS Distributions 
39*699cd480SApple OSS Distributions /*!
40*699cd480SApple OSS Distributions  * @function CE_OK
41*699cd480SApple OSS Distributions  * Returns a true if the passed in value corresponds to kCENoError
42*699cd480SApple OSS Distributions  */
43*699cd480SApple OSS Distributions #define CE_OK(ret) ((ret) == kCENoError)
44*699cd480SApple OSS Distributions 
45*699cd480SApple OSS Distributions #endif
46