#ifndef OBJECT_STORE_H
#define OBJECT_STORE_H
#include "sa_types.h"
#include "slots.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct object_store_s object_store_t;
typedef void (*object_free_function)(void*);
object_store_t* object_store_init(
object_free_function object_free,
size_t count,
const char* name);
void object_store_shutdown(object_store_t* store);
sa_status object_store_add(
slot_t* slot,
object_store_t* store,
void* object,
const sa_uuid* caller_uuid);
sa_status object_store_remove(
object_store_t* store,
slot_t slot,
const sa_uuid* caller_uuid);
sa_status object_store_acquire(
void** object,
object_store_t* store,
slot_t slot,
const sa_uuid* caller_uuid);
sa_status object_store_release(
object_store_t* store,
slot_t slot,
void* object,
const sa_uuid* caller_uuid);
size_t object_store_size(object_store_t* store);
#ifdef __cplusplus
}
#endif
#endif