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