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 8*40b3285dSBenjamin Matthews grstream geomRestartStream; 9*40b3285dSBenjamin Matthews rstream restartStream; 10a486e66cSCameron Smith 1147926302SCameron Smith static struct phio_ops stream_ops = { 12ecf8d2a9SCameron Smith stream_openfile, 1347926302SCameron Smith stream_closefile, 14a486e66cSCameron Smith stream_readheader, 15ea868eb1SCameron Smith stream_writeheader, 16a486e66cSCameron Smith stream_readdatablock, 17ea868eb1SCameron 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->mode = 'r'; 2647926302SCameron Smith sf->grs = grs; 27ecf8d2a9SCameron Smith sf->rs = NULL; 28d7abaf6cSCameron Smith } 2947926302SCameron Smith 30ecf8d2a9SCameron Smith void streamio_setup_write(phio_fp* f, RStream* rs) { 3147926302SCameron Smith *f = (phio_fp) malloc(sizeof(struct streamio_file)); 3247926302SCameron Smith stream_fp sf = (stream_fp) *f; 33ecf8d2a9SCameron Smith sf->ops = &stream_ops; 34ecf8d2a9SCameron Smith sf->mode = 'w'; 35ecf8d2a9SCameron Smith sf->grs = NULL; 3647926302SCameron Smith sf->rs = rs; 37d7abaf6cSCameron Smith } 38a486e66cSCameron Smith 39a486e66cSCameron Smith void streamio_set_gr(grstream grs) { 40a486e66cSCameron Smith geomRestartStream = grs; 41a486e66cSCameron Smith } 42a486e66cSCameron Smith 43a486e66cSCameron Smith grstream streamio_get_gr() { 44a486e66cSCameron Smith return geomRestartStream; 45a486e66cSCameron Smith } 46ea868eb1SCameron Smith 47ea868eb1SCameron Smith void streamio_set_r(rstream rs) { 48ea868eb1SCameron Smith restartStream = rs; 49ea868eb1SCameron Smith } 50ea868eb1SCameron Smith 51ea868eb1SCameron Smith rstream streamio_get_r() { 52ea868eb1SCameron Smith return restartStream; 53ea868eb1SCameron Smith } 54