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