1 #ifndef STRING_STORE_H 2 #define STRING_STORE_H 3 4 #include "config.h" 5 6 #include <stddef.h> 7 8 #define INVALID_INDEX 0xFFFFFFFF 9 10 typedef struct string_store_t string_store_t; 11 typedef struct string_store_writer_t string_store_writer_t; 12 typedef struct string_store_reader_t string_store_reader_t; 13 14 string_store_t *string_store_create(const char *Prefix, size_t RequestedSize, size_t ChunkSize RADB_MEM_PARAMS); 15 string_store_t *string_store_open(const char *Prefix RADB_MEM_PARAMS); 16 void string_store_close(string_store_t *Store); 17 18 size_t string_store_num_entries(string_store_t *Store); 19 20 size_t string_store_size(string_store_t *Store, size_t Index); 21 size_t string_store_get(string_store_t *Store, size_t Index, void *Buffer, size_t Space); 22 void string_store_set(string_store_t *Store, size_t Index, const void *Buffer, size_t Length); 23 24 int string_store_compare(string_store_t *Store, const void *Other, size_t Length, size_t Index); 25 int string_store_compare2(string_store_t *Store, size_t Index1, size_t Index2); 26 27 size_t string_store_alloc(string_store_t *Store); 28 void string_store_free(string_store_t *Store, size_t Index); 29 30 struct string_store_writer_t { 31 string_store_t *Store; 32 size_t Node, Index, Remain; 33 }; 34 35 void string_store_writer_open(string_store_writer_t *Writer, string_store_t *Store, size_t Index); 36 size_t string_store_writer_write(string_store_writer_t *Writer, const void *Buffer, size_t Length); 37 38 struct string_store_reader_t { 39 string_store_t *Store; 40 size_t Node, Offset, Remain; 41 }; 42 43 void string_store_reader_open(string_store_reader_t *Reader, string_store_t *Store, size_t Index); 44 size_t string_store_reader_read(string_store_reader_t *Reader, void *Buffer, size_t Length); 45 46 #endif 47