From 1b95b75805e679de58142ca8af755e0459a67f94 Mon Sep 17 00:00:00 2001 From: David Given Date: Mon, 12 Dec 2016 23:56:49 +0100 Subject: [PATCH] Add pmap_contains_bi() and pmap_remove_bi(). --- modules/src/data/pmap.c | 22 ++++++++++++++++++++++ modules/src/data/pmap.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/modules/src/data/pmap.c b/modules/src/data/pmap.c index a74febcff..5eaadc2dd 100644 --- a/modules/src/data/pmap.c +++ b/modules/src/data/pmap.c @@ -90,6 +90,12 @@ void pmap_remove(void* mapp, void* left, void* right) } } +void pmap_remove_bi(void* mapp, void* left, void* right) +{ + pmap_remove(mapp, left, right); + pmap_remove(mapp, right, left); +} + void pmap_remove_either(void* mapp, void* either) { struct pmap* map = mapp; @@ -106,6 +112,22 @@ void pmap_remove_either(void* mapp, void* either) } } +bool pmap_contains_bi(void* mapp, void* left, void* right) +{ + struct pmap* map = mapp; + int i; + + for (i=0; icount; i++) + { + struct pmap_node* node = &map->item[i]; + if (((node->left == left) && (node->right == right)) + || ((node->left == right) && (node->right == left))) + return true; + } + + return NULL; +} + void* pmap_findleft(void* mapp, void* left) { struct pmap* map = mapp; diff --git a/modules/src/data/pmap.h b/modules/src/data/pmap.h index c9939dc77..9d4ec3326 100644 --- a/modules/src/data/pmap.h +++ b/modules/src/data/pmap.h @@ -27,7 +27,9 @@ extern void pmap_put(void* map, void* left, void* right); extern void pmap_add(void* map, void* left, void* right); extern void pmap_add_bi(void* map, void* left, void* right); extern void pmap_remove(void* map, void* left, void* right); +extern void pmap_remove_bi(void* map, void* left, void* right); extern void pmap_remove_either(void* map, void* either); +extern bool pmap_contains_bi(void* map, void* left, void* right); extern void* pmap_findleft(void* map, void* left); extern void* pmap_findright(void* map, void* right); -- 2.34.1