diff options
author | Adrian Thurston <thurston@complang.org> | 2015-01-17 14:38:11 -0500 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-01-17 14:38:11 -0500 |
commit | 62ac1f337497046fa0f46a41eaee36e23c0e8fcc (patch) | |
tree | c333aa566fa4ffce2d2f6896a2c447232b402e8a /src/map.c | |
parent | ffe2843d882b5f6fc606a6ee09f15a3196840c7b (diff) | |
download | colm-62ac1f337497046fa0f46a41eaee36e23c0e8fcc.tar.gz |
more of map implemented: can now traverse map elements
Diffstat (limited to 'src/map.c')
-rw-r--r-- | src/map.c | 29 |
1 files changed, 24 insertions, 5 deletions
@@ -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 ); |