summaryrefslogtreecommitdiff
path: root/src/map.c
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-01-17 14:38:11 -0500
committerAdrian Thurston <thurston@complang.org>2015-01-17 14:38:11 -0500
commit62ac1f337497046fa0f46a41eaee36e23c0e8fcc (patch)
treec333aa566fa4ffce2d2f6896a2c447232b402e8a /src/map.c
parentffe2843d882b5f6fc606a6ee09f15a3196840c7b (diff)
downloadcolm-62ac1f337497046fa0f46a41eaee36e23c0e8fcc.tar.gz
more of map implemented: can now traverse map elements
Diffstat (limited to 'src/map.c')
-rw-r--r--src/map.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/map.c b/src/map.c
index bdbf9f65..2d617e21 100644
--- a/src/map.c
+++ b/src/map.c
@@ -15,16 +15,35 @@ struct colm_struct *colm_map_el_get( struct colm_program *prg,
MapEl *mapEl, Word genId, Word field )
{
GenericInfo *gi = &prg->rtd->genericInfo[genId];
- ListEl *result = 0;
+ MapEl *result = 0;
switch ( field ) {
case 0:
-// result = listEl->list_prev;
+ result = mapEl->prev;
break;
case 1:
-// result = listEl->list_next;
+ result = mapEl->next;
break;
- case 2:
-// result = listEl->list_next;
+ default:
+ assert( 0 );
+ break;
+ }
+
+ struct colm_struct *s = result != 0 ?
+ colm_struct_container( result, gi->elOffset ) : 0;
+ return s;
+}
+
+struct colm_struct *colm_map_get( struct colm_program *prg,
+ Map *map, Word genId, Word field )
+{
+ GenericInfo *gi = &prg->rtd->genericInfo[genId];
+ MapEl *result = 0;
+ switch ( field ) {
+ case 0:
+ result = map->head;
+ break;
+ case 1:
+ result = map->tail;
break;
default:
assert( 0 );