mrm_shared_cache_builder.h [plain text]
#ifndef mrm_shared_cache_builder_hpp
#define mrm_shared_cache_builder_hpp
#include <Availability.h>
#include <stdint.h>
#include <sys/types.h>
#ifdef __cplusplus
extern "C" {
#endif
enum Platform {
unknown = 0,
macOS = 1, iOS = 2, tvOS = 3, watchOS = 4, bridgeOS = 5, iOSMac = 6, iOS_simulator = 7, tvOS_simulator = 8, watchOS_simulator = 9 };
enum Disposition
{
Unknown = 0,
InternalDevelopment = 1,
Customer = 2,
InternalMinDevelopment = 3
};
enum FileFlags
{
NoFlags = 0,
MustBeInCache = 1,
ShouldBeExcludedFromCacheIfUnusedLeaf = 2,
RequiredClosure = 3,
DylibOrderFile = 100,
DirtyDataOrderFile = 101,
ObjCOptimizationsFile = 102,
};
struct BuildOptions_v1
{
uint64_t version; const char * updateName; const char * deviceName;
enum Disposition disposition; enum Platform platform; const char ** archs;
uint64_t numArchs;
bool verboseDiagnostics;
bool isLocallyBuiltCache;
};
struct BuildOptions_v2
{
uint64_t version; const char * updateName; const char * deviceName;
enum Disposition disposition; enum Platform platform; const char ** archs;
uint64_t numArchs;
bool verboseDiagnostics;
bool isLocallyBuiltCache;
bool optimizeForSize;
};
enum FileBehavior
{
AddFile = 0, ChangeFile = 1, };
struct FileResult
{
uint64_t version; const char* path;
enum FileBehavior behavior;
const uint8_t* data; uint64_t size;
const char* hashArch;
const char* hashType;
const char* hash;
};
struct CacheResult
{
uint64_t version; const char* loggingPrefix; const char* deviceConfiguration;
const char ** warnings; uint64_t numWarnings;
const char ** errors; uint64_t numErrors;
const char* uuidString;
const char* mapJSON;
};
struct MRMSharedCacheBuilder;
__API_AVAILABLE(macos(10.12))
void getVersion(uint32_t *major, uint32_t *minor);
__API_AVAILABLE(macos(10.12))
struct MRMSharedCacheBuilder* createSharedCacheBuilder(const struct BuildOptions_v1* options);
__API_AVAILABLE(macos(10.12))
bool addFile(struct MRMSharedCacheBuilder* builder, const char* path, uint8_t* data, uint64_t size, enum FileFlags fileFlags);
__API_AVAILABLE(macos(10.12))
bool addSymlink(struct MRMSharedCacheBuilder* builder, const char* fromPath, const char* toPath);
__API_AVAILABLE(macos(10.12))
bool runSharedCacheBuilder(struct MRMSharedCacheBuilder* builder);
__API_AVAILABLE(macos(10.12))
const char* const* getErrors(const struct MRMSharedCacheBuilder* builder, uint64_t* errorCount);
__API_AVAILABLE(macos(10.12))
const struct FileResult* const* getFileResults(struct MRMSharedCacheBuilder* builder, uint64_t* resultCount);
__API_AVAILABLE(macos(10.12))
const struct CacheResult* const* getCacheResults(struct MRMSharedCacheBuilder* builder, uint64_t* resultCount);
__API_AVAILABLE(macos(10.12))
const char* const* getFilesToRemove(const struct MRMSharedCacheBuilder* builder, uint64_t* fileCount);
__API_AVAILABLE(macos(10.12))
void destroySharedCacheBuilder(struct MRMSharedCacheBuilder* builder);
#ifdef __cplusplus
}
#endif
#endif