mirror of
https://github.com/fumiama/fumidb.git
synced 2026-06-07 19:40:24 +08:00
int16
This commit is contained in:
@@ -100,4 +100,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
# define likely(x) __builtin_expect(!!(x), 1)
|
||||
# define unlikely(x) __builtin_expect(!!(x), 0)
|
||||
|
||||
#endif
|
||||
@@ -29,6 +29,13 @@ void* create_index(int fd, type_t t, void* buf);
|
||||
// 返回:索引头节点的指针 index
|
||||
void* load_index(int fd, type_t t, uint64_t ptr, void* buf);
|
||||
|
||||
// 移除 index 并释放空间
|
||||
int remove_index(int fd, type_t t, void* index);
|
||||
|
||||
// 统计索引条数
|
||||
// 返回:索引条数
|
||||
uint64_t count_items(int fd, type_t t, void* index);
|
||||
|
||||
// 插入一条索引
|
||||
int insert_item(int fd, type_t t, void* index, key_t k, uint64_t ptr);
|
||||
|
||||
@@ -37,6 +44,7 @@ int insert_item(int fd, type_t t, void* index, key_t k, uint64_t ptr);
|
||||
uint64_t find_item_by_key(int fd, type_t t, void* index, key_t k);
|
||||
|
||||
// 使用索引删除项
|
||||
int remove_item_by_key(int fd, type_t t, void* index, key_t k);
|
||||
// 返回:ptr
|
||||
uint64_t remove_item_by_key(int fd, type_t t, void* index, key_t k);
|
||||
|
||||
#endif
|
||||
35
include/types/int16.h
Normal file
35
include/types/int16.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _TYPE_INT16_H_
|
||||
#define _TYPE_INT16_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include "../types.h"
|
||||
|
||||
#define INT16_INDEX_SZ ( 8*3 + 256*8 )
|
||||
#define INT16_BITMAP_SZ ( 65536/8 )
|
||||
#define INT16_CHAIN_SZ ( (256+1)*8 )
|
||||
|
||||
// len(buf) >= INT16_INDEX_SZ+10 + INT16_BITMAP_SZ+8*2 = 10290
|
||||
// &buf[0] ~ &buf[2081] is index, index = buf+10
|
||||
// &buf[2082] ~ &buf[6185] is the first page of bitmap, ptr = buf+2090
|
||||
// &buf[6186] ~ &buf[10289] is the second page of bitmap, ptr = buf+6194
|
||||
// 返回:index = buf+10
|
||||
void* create_int16_index(int fd, void* buf);
|
||||
|
||||
// len(buf) >= INT16_INDEX_SZ+10 + INT16_BITMAP_SZ+8*2 = 10290
|
||||
// &buf[0] ~ &buf[2081] is index, index = buf+10
|
||||
// &buf[2082] ~ &buf[6185] is the first page of bitmap, ptr = buf+2090
|
||||
// &buf[6186] ~ &buf[10289] is the second page of bitmap, ptr = buf+6194
|
||||
// 返回:index = buf+10
|
||||
void* load_int16_index(int fd, uint64_t ptr, void* buf);
|
||||
|
||||
int remove_int16_index(int fd, void* index);
|
||||
|
||||
uint64_t count_int16_items(int fd, void* index);
|
||||
|
||||
int insert_int16_item(int fd, void* index, key_t k, uint64_t ptr);
|
||||
|
||||
uint64_t find_item_by_int16_key(int fd, void* index, key_t k);
|
||||
|
||||
uint64_t remove_item_by_int16_key(int fd, void* index, key_t k);
|
||||
|
||||
#endif
|
||||
@@ -12,10 +12,14 @@ void* create_int8_index(int fd, void* buf);
|
||||
// len(buf) >= INT8_INDEX_SZ+10
|
||||
void* load_int8_index(int fd, uint64_t ptr, void* buf);
|
||||
|
||||
int remove_int8_index(int fd, void* index);
|
||||
|
||||
uint64_t count_int8_items(int fd, void* index);
|
||||
|
||||
int insert_int8_item(int fd, void* index, key_t k, uint64_t ptr);
|
||||
|
||||
uint64_t find_item_by_int8_key(int fd, void* index, key_t k);
|
||||
|
||||
int remove_item_by_int8_key(int fd, void* index, key_t k);
|
||||
uint64_t remove_item_by_int8_key(int fd, void* index, key_t k);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user