Files
kvstore/include/kv_store.h

92 lines
2.4 KiB
C

#ifndef KV_STORE_H
#define KV_STORE_H
/*
* Key/Value structure containing a key and associated value.
*/
typedef struct {
char *key;
char *value;
} kv_store_entry_t;
/*
* Colleciton structure containing the entries of a Key/Value store.
*/
typedef struct {
kv_store_entry_t *entries;
int length; // Current length of store
int capacity; // Capacity of store
} kv_store_t;
/*
* kv_store_entry_init - Initialize a Key/Value Store Entry
* @key: Key for the entry
* @value: Value for the entry
*
* Returns: Pointer to newly allocated kv_store_entry_t, or NULL on failure.
* Caller must free the returned pointer.
*/
kv_store_entry_t *kv_store_entry_init(const char *key, const char *value);
/*
* kv_store_entry_copy - Copy a Key/Value Store Entry
* @entry: Entry to copy
*
* Returns: Pointer to newly allocated copy of kv_store_entry_t, or NULL on
* failure. Caller must free the returned pointer.
*/
kv_store_entry_t *kv_store_entry_copy(const kv_store_entry_t *entry);
/*
* kv_store_entry_free - Free a Key/Value Store Entry
* @entry: Entry to free
*/
void kv_store_entry_free(kv_store_entry_t *entry);
/*
* kv_store_init - Initialize a Key/Value Store
* @capacity: Initial capacity of the store
*
* Returns: Pointer to newly allocated kv_store_t, or NULL on failure. Caller
* must free the returned pointer.
*/
kv_store_t *kv_store_init(int capacity);
/*
* kv_store_free - Free a Key/Value Store
* @store: Store to free
*/
void kv_store_free(kv_store_t *store);
/*
* kv_store_get_entry - Get Key/Value Store Entry from Store
* @store: KV Store
* @key: Key to get from store.
*
* Returns: Pointer to newly allocated copy of the entry, or NULL if not found
* or on failure. Caller must free the returned pointer.
*/
kv_store_entry_t *kv_store_get_entry(const kv_store_t *store, const char *key);
/*
* kv_store_set_entry - Set Key/Value Store Entry to Store
* @store: KV Store
* @key: Key to set or update in store.
*
* Returns: 1 if value is updated, 0 if the value was added, or -1 on
* failure.
*/
int kv_store_set_entry(kv_store_t *const store, const kv_store_entry_t *entry);
/*
* kv_store_delete_entry - Delete Key/Value Store Entry from Store
* @store: KV Store
* @key: Key to delete from store.
*
* Returns: 1 if the value was deleted, 0 if the value was not found, or -1
* on failure.
*/
int kv_store_delete_entry(kv_store_t *const store, const char *key);
#endif