}
}
+void pmap_remove_either(void* mapp, void* either)
+{
+ struct pmap* map = mapp;
+ int i;
+
+ for (i=map->count-1; i>=0; i--)
+ {
+ struct pmap_node* node = &map->item[i];
+ if ((node->left == either) || (node->right == either))
+ {
+ memmove(node, node+1, sizeof(*node) * (map->count - i - 1));
+ map->count--;
+ }
+ }
+}
+
void* pmap_findleft(void* mapp, void* left)
{
struct pmap* map = mapp;
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_either(void* map, void* either);
extern void* pmap_findleft(void* map, void* left);
extern void* pmap_findright(void* map, void* right);