Replace pmap_get() with pmap_findleft() and pmap_findright(), to allow lookups
in both directions.
This commit is contained in:
parent
637aeed70a
commit
4261744537
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue