147926302SCameron Smith #include <stdio.h> 247926302SCameron Smith #include <stdlib.h> 3d7abaf6cSCameron Smith #include "streamio.h" 447926302SCameron Smith #include "phio_stream.h" 547926302SCameron Smith #include "phio_posix.h" 647926302SCameron Smith #include "phio_base.h" 7d7abaf6cSCameron Smith 8a486e66cSCameron Smith extern grstream geomRestartStream; 9*ea868eb1SCameron Smith extern rstream restartStream; 10a486e66cSCameron Smith 1147926302SCameron Smith static struct phio_ops stream_ops = { 12ecf8d2a9SCameron Smith stream_openfile, 1347926302SCameron Smith stream_closefile, 14a486e66cSCameron Smith stream_readheader, 15*ea868eb1SCameron Smith stream_writeheader, 16a486e66cSCameron Smith stream_readdatablock, 17*ea868eb1SCameron Smith stream_writedatablock, 1847926302SCameron Smith stream_constructname 1947926302SCameron Smith }; 2047926302SCameron Smith 21ecf8d2a9SCameron Smith void streamio_setup_read(phio_fp* f, GRStream* grs) { 2247926302SCameron Smith *f = (phio_fp) malloc(sizeof(struct streamio_file)); 2347926302SCameron Smith stream_fp sf = (stream_fp) *f; 24ecf8d2a9SCameron Smith sf->ops = &stream_ops; 25ecf8d2a9SCameron Smith sf->file = (int*) malloc(sizeof(int*)); 26ecf8d2a9SCameron Smith sf->mode = 'r'; 2747926302SCameron Smith sf->grs = grs; 28ecf8d2a9SCameron Smith sf->rs = NULL; 29d7abaf6cSCameron Smith } 3047926302SCameron Smith 31ecf8d2a9SCameron Smith void streamio_setup_write(phio_fp* f, RStream* rs) { 3247926302SCameron Smith *f = (phio_fp) malloc(sizeof(struct streamio_file)); 3347926302SCameron Smith stream_fp sf = (stream_fp) *f; 34ecf8d2a9SCameron Smith sf->ops = &stream_ops; 35ecf8d2a9SCameron Smith sf->file = (int*) malloc(sizeof(int*)); 36ecf8d2a9SCameron Smith sf->mode = 'w'; 37ecf8d2a9SCameron Smith sf->grs = NULL; 3847926302SCameron Smith sf->rs = rs; 39d7abaf6cSCameron Smith } 40a486e66cSCameron Smith 41a486e66cSCameron Smith void streamio_set_gr(grstream grs) { 42a486e66cSCameron Smith geomRestartStream = grs; 43a486e66cSCameron Smith } 44a486e66cSCameron Smith 45a486e66cSCameron Smith grstream streamio_get_gr() { 46a486e66cSCameron Smith return geomRestartStream; 47a486e66cSCameron Smith } 48*ea868eb1SCameron Smith 49*ea868eb1SCameron Smith void streamio_set_r(rstream rs) { 50*ea868eb1SCameron Smith restartStream = rs; 51*ea868eb1SCameron Smith } 52*ea868eb1SCameron Smith 53*ea868eb1SCameron Smith rstream streamio_get_r() { 54*ea868eb1SCameron Smith return restartStream; 55*ea868eb1SCameron Smith } 56