diff options
author | Adrian Thurston <thurston@complang.org> | 2015-02-14 15:04:28 -0500 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-02-14 15:04:28 -0500 |
commit | 63e23d75bacdca95863026476b90c76292ec0807 (patch) | |
tree | 2aa6914f7ac5035edad131ea96c73342677aeab7 /src/iter.c | |
parent | f0089542330fa9ff580faf2e69f18bd6f7367e50 (diff) | |
download | colm-63e23d75bacdca95863026476b90c76292ec0807.tar.gz |
make it possible to iterate the values of a value list or map
Diffstat (limited to 'src/iter.c')
-rw-r--r-- | src/iter.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -128,6 +128,20 @@ Tree *colm_list_iter_deref_cur( Program *prg, ListIter *iter ) return (Tree*)s; } +Tree *colm_viter_deref_cur( Program *prg, ListIter *iter ) +{ + GenericInfo *gi = &prg->rtd->genericInfo[iter->genericId]; + ListEl *el = (ListEl*)iter->ref.kid; + struct colm_struct *s = el != 0 ? + colm_struct_container( el, gi->elOffset ) : 0; + + Tree *val = colm_struct_get_field( s, Tree*, 0 ); + if ( gi->valueType == TYPE_TREE ) + treeUpref( val ); + + return (Tree*)val; +} + void initTreeIter( TreeIter *treeIter, Tree **stackRoot, long argSize, long rootSize, const Ref *rootRef, int searchId ) |