mirror of
https://github.com/fluencelabs/musl
synced 2025-04-24 23:02:14 +00:00
POSIX conformance fix: define struct entry in search.h
This commit is contained in:
parent
7e01b8f09b
commit
b7d3210196
@ -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
|
|||||||
#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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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)
|
|||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user