add rbtree/testcase.c/Makefile
This commit is contained in:
47
kvstore.h
47
kvstore.h
@@ -8,7 +8,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <stddef.h>
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#define KVS_MAX_TOKENS 128
|
||||
|
||||
#define ENABLE_ARRAY 1
|
||||
|
||||
#define ENABLE_RBTREE 1
|
||||
|
||||
|
||||
|
||||
@@ -61,6 +61,49 @@ int kvs_array_mod(kvs_array_t *inst, char *key, char *value);
|
||||
int kvs_array_exist(kvs_array_t *inst, char *key);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if ENABLE_RBTREE
|
||||
|
||||
#define RED 1
|
||||
#define BLACK 2
|
||||
|
||||
#define ENABLE_KEY_CHAR 1
|
||||
|
||||
#if ENABLE_KEY_CHAR
|
||||
typedef char* KEY_TYPE;
|
||||
#else
|
||||
typedef int KEY_TYPE; // key
|
||||
#endif
|
||||
|
||||
typedef struct _rbtree_node {
|
||||
unsigned char color;
|
||||
struct _rbtree_node *right;
|
||||
struct _rbtree_node *left;
|
||||
struct _rbtree_node *parent;
|
||||
KEY_TYPE key;
|
||||
void *value;
|
||||
} rbtree_node;
|
||||
|
||||
typedef struct _rbtree {
|
||||
rbtree_node *root;
|
||||
rbtree_node *nil;
|
||||
} rbtree;
|
||||
|
||||
|
||||
typedef struct _rbtree kvs_rbtree_t;
|
||||
|
||||
int kvs_rbtree_create(kvs_rbtree_t *inst);
|
||||
void kvs_rbtree_destory(kvs_rbtree_t *inst);
|
||||
int kvs_rbtree_set(kvs_rbtree_t *inst, char *key, char *value);
|
||||
char* kvs_rbtree_get(kvs_rbtree_t *inst, char *key);
|
||||
int kvs_rbtree_del(kvs_rbtree_t *inst, char *key);
|
||||
int kvs_rbtree_mod(kvs_rbtree_t *inst, char *key, char *value);
|
||||
int kvs_rbtree_exist(kvs_rbtree_t *inst, char *key);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user