Replace pmap_get() with pmap_findleft() and pmap_findright(), to allow lookups
authorDavid Given <dg@cowlark.com>
Sat, 8 Oct 2016 21:32:13 +0000 (23:32 +0200)
committerDavid Given <dg@cowlark.com>
Sat, 8 Oct 2016 21:32:13 +0000 (23:32 +0200)
in both directions.

modules/src/data/pmap.c
modules/src/data/pmap.h

index 9ed2d9f..ae62af3 100644 (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;
+}
+
 
index 19986fc..8c06ec6 100644 (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