#ifndef SVP_STORE_H
#define SVP_STORE_H
#include "object_store.h"
#include "porting/svp.h"
#include "sa_types.h"
#include "ta_sa_types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct svp_s svp_t;
typedef object_store_t svp_store_t;
svp_buffer_t* svp_get_buffer(const svp_t* svp);
svp_store_t* svp_store_init(size_t size);
void svp_store_shutdown(svp_store_t* store);
sa_status svp_supported();
sa_status svp_store_create(
sa_svp_buffer* svp_buffer,
svp_store_t* store,
void* svp_memory,
size_t size,
const sa_uuid* caller_uuid);
sa_status svp_store_release(
void** svp_memory,
size_t* size,
svp_store_t* store,
sa_svp_buffer svp_buffer,
const sa_uuid* caller_uuid);
sa_status svp_store_acquire_exclusive(
svp_t** svp,
svp_store_t* store,
sa_svp_buffer svp_buffer,
const sa_uuid* caller_uuid);
sa_status svp_store_release_exclusive(
svp_store_t* store,
sa_svp_buffer svp_buffer,
svp_t* svp,
const sa_uuid* caller_uuid);
#ifdef __cplusplus
}
#endif
#endif