1818#include <stdlib.h>
1919#include <string.h>
2020
21+ #include "common.h"
2122#include "memtable.h"
2223
23- struct MemTableRecord *
24+ static struct MemTableRecord *
2425MemTableRecord_new (const char * key , size_t key_len , int64_t value_loc )
2526{
2627 struct MemTableRecord * record = malloc (sizeof (struct MemTableRecord ));
@@ -34,21 +35,6 @@ MemTableRecord_new(const char* key, size_t key_len, int64_t value_loc)
3435 return record ;
3536}
3637
37- int
38- MemTableRecord_key_cmp (const struct MemTableRecord * r ,
39- const char * key ,
40- size_t key_len )
41- {
42- size_t len = r -> key_len < key_len ? r -> key_len : key_len ;
43-
44- int cmp = memcmp (key , r -> key , len );
45- if (cmp != 0 || r -> key_len == key_len ) {
46- return cmp ;
47- }
48-
49- return key_len < r -> key_len ? -1 : 1 ;
50- }
51-
5238struct MemTable *
5339MemTable_new ()
5440{
@@ -62,10 +48,8 @@ MemTable_new()
6248 return memtable ;
6349}
6450
65- int
66- MemTable_binary_search (const struct MemTable * memtable ,
67- const char * key ,
68- size_t key_len )
51+ static int
52+ binary_search (const struct MemTable * memtable , const char * key , size_t key_len )
6953{
7054 if (memtable -> size == 0 ) {
7155 return -1 ;
@@ -77,7 +61,8 @@ MemTable_binary_search(const struct MemTable* memtable,
7761 while (a < b ) {
7862 int m = a + (b - a ) / 2 ;
7963
80- int cmp = MemTableRecord_key_cmp (memtable -> records [m ], key , key_len );
64+ int cmp = WiscKey_key_cmp (
65+ memtable -> records [m ]-> key , memtable -> records [m ]-> key_len , key , key_len );
8166 if (cmp == 0 ) {
8267 return m ;
8368 } else if (cmp < 0 ) {
@@ -87,25 +72,27 @@ MemTable_binary_search(const struct MemTable* memtable,
8772 }
8873 }
8974
90- int cmp = MemTableRecord_key_cmp (memtable -> records [a ], key , key_len );
75+ int cmp = WiscKey_key_cmp (
76+ memtable -> records [a ]-> key , memtable -> records [a ]-> key_len , key , key_len );
9177 if (cmp == 0 ) {
9278 return a ;
9379 }
9480 return -1 ;
9581}
9682
97- unsigned int
98- MemTable_insertion_point (const struct MemTable * memtable ,
99- const char * key ,
100- size_t key_len )
83+ static unsigned int
84+ insertion_point (const struct MemTable * memtable ,
85+ const char * key ,
86+ size_t key_len )
10187{
10288 int a = 0 ;
10389 int b = (int )memtable -> size ;
10490
10591 while (a < b ) {
10692 int m = (a + b ) / 2 ;
10793
108- int cmp = MemTableRecord_key_cmp (memtable -> records [m ], key , key_len );
94+ int cmp = WiscKey_key_cmp (
95+ memtable -> records [m ]-> key , memtable -> records [m ]-> key_len , key , key_len );
10996 if (cmp < 0 ) {
11097 b = m - 1 ;
11198 } else {
@@ -119,7 +106,7 @@ MemTable_insertion_point(const struct MemTable* memtable,
119106struct MemTableRecord *
120107MemTable_get (const struct MemTable * memtable , const char * key , size_t key_len )
121108{
122- int idx = MemTable_binary_search (memtable , key , key_len );
109+ int idx = binary_search (memtable , key , key_len );
123110 if (idx == -1 ) {
124111 return NULL ;
125112 }
@@ -133,11 +120,11 @@ MemTable_set(struct MemTable* memtable,
133120 size_t key_len ,
134121 int64_t value_loc )
135122{
136- int idx = MemTable_binary_search (memtable , key , key_len );
123+ int idx = binary_search (memtable , key , key_len );
137124 if (idx == -1 ) {
138125 struct MemTableRecord * record = MemTableRecord_new (key , key_len , value_loc );
139126
140- unsigned int insert_idx = MemTable_insertion_point (memtable , key , key_len );
127+ unsigned int insert_idx = insertion_point (memtable , key , key_len );
141128
142129 if (insert_idx < memtable -> size ) {
143130 // Shift the array of records by one pointer;
@@ -157,12 +144,12 @@ MemTable_set(struct MemTable* memtable,
157144void
158145MemTable_delete (struct MemTable * memtable , const char * key , size_t key_len )
159146{
160- int idx = MemTable_binary_search (memtable , key , key_len );
147+ int idx = binary_search (memtable , key , key_len );
161148
162149 if (idx == -1 ) {
163150 struct MemTableRecord * record = MemTableRecord_new (key , key_len , -1 );
164151
165- unsigned int insert_idx = MemTable_insertion_point (memtable , key , key_len );
152+ unsigned int insert_idx = insertion_point (memtable , key , key_len );
166153
167154 if (insert_idx < memtable -> size ) {
168155 // Shift the array of records by one pointer;
0 commit comments