Replace pmap_get() with pmap_findleft() and pmap_findright(), to allow lookups

in both directions.
This commit is contained in:
David Given 2016-10-08 23:32:13 +02:00
parent 637aeed70a
commit 4261744537
2 changed files with 18 additions and 2 deletions

View file

@ -56,7 +56,7 @@ void pmap_add(void* mapp, void* left, void* right)
append(map, left, right);
}
void* pmap_get(void* mapp, void* left)
void* pmap_findleft(void* mapp, void* left)
{
struct pmap* map = mapp;
int i;
@ -71,4 +71,19 @@ void* pmap_get(void* mapp, void* left)
return NULL;
}
void* pmap_findright(void* mapp, void* right)
{
struct pmap* map = mapp;
int i;
for (i=0; i<map->count; i++)
{
struct pmap_node* node = &map->item[i];
if (node->right == right)
return node->left;
}
return NULL;
}

View file

@ -25,7 +25,8 @@ struct pmap
extern void pmap_put(void* map, void* left, void* right);
extern void pmap_add(void* map, void* left, void* right);
extern void* pmap_get(void* map, void* left);
extern void* pmap_findleft(void* map, void* left);
extern void* pmap_findright(void* map, void* right);
#endif