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