diff options
author | Adrian Thurston <thurston@colm.net> | 2018-06-18 14:39:56 +0700 |
---|---|---|
committer | Adrian Thurston <thurston@colm.net> | 2018-06-18 14:39:56 +0700 |
commit | 947f47fa390a262c101822df2b181c807bd861bc (patch) | |
tree | ffe01b598e3c3bcdeb5cd5dfa75137db87a0f73e /src | |
parent | e706bc4c2a396c3a60658072412e26d9bee83fca (diff) | |
download | colm-947f47fa390a262c101822df2b181c807bd861bc.tar.gz |
added close_stream to stream funcs
Diffstat (limited to 'src')
-rw-r--r-- | src/bytecode.c | 5 | ||||
-rw-r--r-- | src/ctinput.cc | 4 | ||||
-rw-r--r-- | src/input.c | 15 | ||||
-rw-r--r-- | src/input.h | 1 |
4 files changed, 19 insertions, 6 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 502be2e6..6c68135c 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -2532,10 +2532,7 @@ again: stream_t *stream = vm_pop_stream(); struct stream_impl *si = stream->impl; - if ( si->file != 0 ) { - colm_close_stream_file( si->file ); - si->file = 0; - } + si->funcs->close_stream( si ); vm_push_stream( stream ); break; diff --git a/src/ctinput.cc b/src/ctinput.cc index bab9ac5d..a53760fc 100644 --- a/src/ctinput.cc +++ b/src/ctinput.cc @@ -246,7 +246,7 @@ stream_funcs_ct patternFuncs = &inputStreamPatternDestructor, - 0, 0, 0 + 0, 0, 0, 0 }; @@ -465,7 +465,7 @@ stream_funcs_ct replFuncs = &inputStreamConsDestructor, - 0, 0, 0 + 0, 0, 0, 0 }; void pushBinding( pda_run *pdaRun, parse_tree_t *parseTree ) diff --git a/src/input.c b/src/input.c index 6474ba19..2fd1d65a 100644 --- a/src/input.c +++ b/src/input.c @@ -337,6 +337,14 @@ static void data_flush_stream( struct stream_impl_data *si ) fflush( si->file ); } +static void data_close_stream( struct stream_impl_data *si ) +{ + if ( si->file != 0 ) { + colm_close_stream_file( si->file ); + si->file = 0; + } +} + static void data_print_tree( struct colm_program *prg, tree_t **sp, struct stream_impl_data *si, tree_t *tree, int trim ) { @@ -631,6 +639,10 @@ static void stream_flush_stream( struct stream_impl_seq *si ) { } +static void stream_close_stream( struct stream_impl_seq *si ) +{ +} + static void stream_print_tree( struct colm_program *prg, tree_t **sp, struct stream_impl_seq *si, tree_t *tree, int trim ) { @@ -1207,6 +1219,7 @@ struct stream_funcs_seq stream_funcs = .destructor = &stream_destructor, .get_collect = &stream_get_collect, .flush_stream = &stream_flush_stream, + .close_stream = &stream_close_stream, .print_tree = &stream_print_tree, }; @@ -1220,6 +1233,7 @@ struct stream_funcs_data file_funcs = .destructor = &data_destructor, .get_collect = &data_get_collect, .flush_stream = &data_flush_stream, + .close_stream = &data_close_stream, .print_tree = &data_print_tree, }; @@ -1233,6 +1247,7 @@ struct stream_funcs_data text_funcs = .destructor = &data_destructor, .get_collect = &data_get_collect, .flush_stream = &data_flush_stream, + .close_stream = &data_close_stream, .print_tree = &data_print_tree, }; diff --git a/src/input.h b/src/input.h index bef76dae..1c2dae61 100644 --- a/src/input.h +++ b/src/input.h @@ -104,6 +104,7 @@ struct stream_funcs \ void (*destructor)( struct colm_program *prg, struct colm_tree **sp, struct stream_impl *si ); \ struct colm_str_collect *(*get_collect)( struct stream_impl *si ); \ void (*flush_stream)( struct stream_impl *si ); \ + void (*close_stream)( struct stream_impl *si ); \ void (*print_tree)( struct colm_program *prg, struct colm_tree **sp, \ struct stream_impl *impl, struct colm_tree *tree, int trim ); \ } |