Updated project to use eclipse build tools and make system.
[C-Data-Structures.git] / lib_hash.c
bloba7c9b2d5f340c6cd1e9f2f17f3713b8209d60449
1 #include <assert.h>
2 #include <limits.h>
3 #include <stdio.h>
4 #include <stdlib.h>
6 #include "lib_hash.h"
8 int is_prime(int num)
10 int i;
11 assert(num >= 0);
12 if(num == 1 || num == 0) return 0;
13 for(i = 2 ; i <= num / 2; i++)
14 if(num % i == 0) return 0;
15 return 1;
18 int next_twinprime(int num)
20 assert(num >= 2);
21 while(num < INT_MAX) {
22 num++;
23 if(is_prime(num) && is_prime(num-2))return num;
25 return -1;
28 Hash hash_new(int len)
30 Hash h;
31 assert(len >= 2);
32 h.size = len;
33 h.data = malloc(sizeof(int)*len);
34 return h;
37 Hash hash_new_prime(int len)
39 Hash h;
40 assert(len >= 2);
41 len = next_twinprime(len);
42 h.size = len;
43 h.data = malloc(sizeof(int)*len);
44 return h;
47 int hash_data(void *data, int num, size_t size)
49 int slot = 0;
50 while(num >= 0)
52 /* slot += (void *) (data) + (num * size); */
53 slot += (int)data + size * num;
54 num--;
56 return slot;
59 int hash_insert(Hash h, void * data, size_t length)
61 int slot;
62 assert(data != NULL);
63 /*slot = hash_data(data, length);
64 if(h[slot]->data == NULL) *//* insert data in first node */;
66 return 0;
69 void * hash_search(Hash h, void * data, size_t length)
71 return NULL;
74 int hash_remove(Hash h, void * data, size_t length)
76 assert(data != NULL);
77 return 0;
80 int hash_empty(Hash h)
82 return 0;
85 int hash_full(Hash h)
87 return 0;
90 void hash_clear(Hash h)
95 void hash_print(Hash h)
100 void hash_delete(Hash h)
102 free(&h);