提交 b7d32101 编写于 作者: S Szabolcs Nagy

POSIX conformance fix: define struct entry in search.h

上级 7e01b8f0
...@@ -13,7 +13,7 @@ extern "C" { ...@@ -13,7 +13,7 @@ extern "C" {
typedef enum { FIND, ENTER } ACTION; typedef enum { FIND, ENTER } ACTION;
typedef enum { preorder, postorder, endorder, leaf } VISIT; typedef enum { preorder, postorder, endorder, leaf } VISIT;
typedef struct { typedef struct entry {
char *key; char *key;
void *data; void *data;
} ENTRY; } ENTRY;
......
...@@ -14,14 +14,14 @@ with the posix api items cannot be iterated and length cannot be queried ...@@ -14,14 +14,14 @@ with the posix api items cannot be iterated and length cannot be queried
#define MINSIZE 8 #define MINSIZE 8
#define MAXSIZE ((size_t)-1/2 + 1) #define MAXSIZE ((size_t)-1/2 + 1)
struct entry { struct elem {
ENTRY item; ENTRY item;
size_t hash; size_t hash;
}; };
static size_t mask; static size_t mask;
static size_t used; static size_t used;
static struct entry *tab; static struct elem *tab;
static size_t keyhash(char *k) static size_t keyhash(char *k)
{ {
...@@ -37,9 +37,9 @@ static int resize(size_t nel) ...@@ -37,9 +37,9 @@ static int resize(size_t nel)
{ {
size_t newsize; size_t newsize;
size_t i, j; size_t i, j;
struct entry *e, *newe; struct elem *e, *newe;
struct entry *oldtab = tab; struct elem *oldtab = tab;
struct entry *oldend = tab + mask + 1; struct elem *oldend = tab + mask + 1;
if (nel > MAXSIZE) if (nel > MAXSIZE)
nel = MAXSIZE; nel = MAXSIZE;
...@@ -81,10 +81,10 @@ void hdestroy(void) ...@@ -81,10 +81,10 @@ void hdestroy(void)
used = 0; used = 0;
} }
static struct entry *lookup(char *key, size_t hash) static struct elem *lookup(char *key, size_t hash)
{ {
size_t i, j; size_t i, j;
struct entry *e; struct elem *e;
for (i=hash,j=1; ; i+=j++) { for (i=hash,j=1; ; i+=j++) {
e = tab + (i & mask); e = tab + (i & mask);
...@@ -98,7 +98,7 @@ static struct entry *lookup(char *key, size_t hash) ...@@ -98,7 +98,7 @@ static struct entry *lookup(char *key, size_t hash)
ENTRY *hsearch(ENTRY item, ACTION action) ENTRY *hsearch(ENTRY item, ACTION action)
{ {
size_t hash = keyhash(item.key); size_t hash = keyhash(item.key);
struct entry *e = lookup(item.key, hash); struct elem *e = lookup(item.key, hash);
if (e->item.key) if (e->item.key)
return &e->item; return &e->item;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册