xref: /xnu-11215.61.5/EXTERNAL_HEADERS/CoreEntitlements/CoreEntitlements.h (revision 4f1223e81cd707a65cc109d0b8ad6653699da3c4)
1*4f1223e8SApple OSS Distributions /*!
2*4f1223e8SApple OSS Distributions  * @header
3*4f1223e8SApple OSS Distributions  * Umbrella header for CoreEntitlements
4*4f1223e8SApple OSS Distributions  */
5*4f1223e8SApple OSS Distributions #ifndef CORE_ENTITLEMENTS_H
6*4f1223e8SApple OSS Distributions #define CORE_ENTITLEMENTS_H
7*4f1223e8SApple OSS Distributions 
8*4f1223e8SApple OSS Distributions #ifdef __cplusplus
9*4f1223e8SApple OSS Distributions extern "C" {
10*4f1223e8SApple OSS Distributions #endif
11*4f1223e8SApple OSS Distributions 
12*4f1223e8SApple OSS Distributions typedef const struct CERuntime* CERuntime_t;
13*4f1223e8SApple OSS Distributions typedef struct CEQueryContext* CEQueryContext_t;
14*4f1223e8SApple OSS Distributions 
15*4f1223e8SApple OSS Distributions #define _CE_INDIRECT 1
16*4f1223e8SApple OSS Distributions 
17*4f1223e8SApple OSS Distributions #ifdef TXM
18*4f1223e8SApple OSS Distributions #include <attributes.h>
19*4f1223e8SApple OSS Distributions #include <ptrcheck.h>
20*4f1223e8SApple OSS Distributions #endif
21*4f1223e8SApple OSS Distributions 
22*4f1223e8SApple OSS Distributions #if defined(__has_feature) && __has_feature(bounds_attributes)
23*4f1223e8SApple OSS Distributions #define CE_HEADER_INDEXABLE __attribute__((__indexable__))
24*4f1223e8SApple OSS Distributions #else
25*4f1223e8SApple OSS Distributions #define CE_HEADER_INDEXABLE
26*4f1223e8SApple OSS Distributions #endif
27*4f1223e8SApple OSS Distributions 
28*4f1223e8SApple OSS Distributions #include <os/base.h>
29*4f1223e8SApple OSS Distributions #include <CoreEntitlements/Errors.h>
30*4f1223e8SApple OSS Distributions #include <CoreEntitlements/Result.h>
31*4f1223e8SApple OSS Distributions #include <CoreEntitlements/Runtime.h>
32*4f1223e8SApple OSS Distributions #include <CoreEntitlements/Entitlements.h>
33*4f1223e8SApple OSS Distributions #include <CoreEntitlements/Serialization.h>
34*4f1223e8SApple OSS Distributions #include <CoreEntitlements/Index.h>
35*4f1223e8SApple OSS Distributions 
36*4f1223e8SApple OSS Distributions __ptrcheck_abi_assume_single();
37*4f1223e8SApple OSS Distributions 
38*4f1223e8SApple OSS Distributions /*!
39*4f1223e8SApple OSS Distributions  * @typedef CEType_t
40*4f1223e8SApple OSS Distributions  * @brief Represents a type of element supported by CoreEntitlements
41*4f1223e8SApple OSS Distributions  *
42*4f1223e8SApple OSS Distributions  * @const kCETypeUnknown
43*4f1223e8SApple OSS Distributions  * An unknown type
44*4f1223e8SApple OSS Distributions  *
45*4f1223e8SApple OSS Distributions  * @const kCETypeDictionary
46*4f1223e8SApple OSS Distributions  * A dictionary container
47*4f1223e8SApple OSS Distributions  *
48*4f1223e8SApple OSS Distributions  * @const kCETypeSequence
49*4f1223e8SApple OSS Distributions  * An ordered sequence container
50*4f1223e8SApple OSS Distributions  *
51*4f1223e8SApple OSS Distributions  * @const kCETypeInteger
52*4f1223e8SApple OSS Distributions  * An integer.
53*4f1223e8SApple OSS Distributions  *
54*4f1223e8SApple OSS Distributions  * @const kCETypeString
55*4f1223e8SApple OSS Distributions  * A string of bytes.
56*4f1223e8SApple OSS Distributions  *
57*4f1223e8SApple OSS Distributions  * @const kCETypeBool
58*4f1223e8SApple OSS Distributions  * A boolean.
59*4f1223e8SApple OSS Distributions  */
60*4f1223e8SApple OSS Distributions OS_CLOSED_ENUM(CEType, uint32_t,
61*4f1223e8SApple OSS Distributions                kCETypeUnknown = 0,
62*4f1223e8SApple OSS Distributions                kCETypeDictionary = 1,
63*4f1223e8SApple OSS Distributions                kCETypeSequence = 2,
64*4f1223e8SApple OSS Distributions                kCETypeInteger = 3,
65*4f1223e8SApple OSS Distributions                kCETypeString = 4,
66*4f1223e8SApple OSS Distributions                kCETypeBool = 5,
67*4f1223e8SApple OSS Distributions                kCETypeData = 6);
68*4f1223e8SApple OSS Distributions 
69*4f1223e8SApple OSS Distributions /*!
70*4f1223e8SApple OSS Distributions  * @function CE_RT_LOG
71*4f1223e8SApple OSS Distributions  * Log a single message via the current runtime
72*4f1223e8SApple OSS Distributions  * Only called if the runtime supports logging.
73*4f1223e8SApple OSS Distributions  */
74*4f1223e8SApple OSS Distributions #define CE_RT_LOG(msg) do { if (rt->log) { rt->log(rt, "[%s]: %s\n", __FUNCTION__, msg); } } while(0)
75*4f1223e8SApple OSS Distributions 
76*4f1223e8SApple OSS Distributions /*!
77*4f1223e8SApple OSS Distributions  * @function CE_RT_LOGF
78*4f1223e8SApple OSS Distributions  * Logs using the passed in format. Printf like.
79*4f1223e8SApple OSS Distributions  * Only called if the runtime supports logging.
80*4f1223e8SApple OSS Distributions  */
81*4f1223e8SApple OSS Distributions #define CE_RT_LOGF(fmt, ...) do { if (rt->log) { rt->log(rt, "[%s]: " fmt, __FUNCTION__, __VA_ARGS__); } } while(0)
82*4f1223e8SApple OSS Distributions 
83*4f1223e8SApple OSS Distributions /*!
84*4f1223e8SApple OSS Distributions  * @function CE_RT_ABORT
85*4f1223e8SApple OSS Distributions  * Invokes the runtime abort function with a passed in message.
86*4f1223e8SApple OSS Distributions  * This function should not return.
87*4f1223e8SApple OSS Distributions  */
88*4f1223e8SApple OSS Distributions #define CE_RT_ABORT(...) do { rt->abort(rt, "[%s]: %s\n", __FUNCTION__, __VA_ARGS__); } while(0)
89*4f1223e8SApple OSS Distributions 
90*4f1223e8SApple OSS Distributions #ifdef __cplusplus
91*4f1223e8SApple OSS Distributions }
92*4f1223e8SApple OSS Distributions #endif
93*4f1223e8SApple OSS Distributions 
94*4f1223e8SApple OSS Distributions #endif
95