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