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