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*a486e66cSCameron Smith extern grstream geomRestartStream; 9*a486e66cSCameron Smith 1047926302SCameron Smith static struct phio_ops stream_ops = { 11ecf8d2a9SCameron Smith stream_openfile, 1247926302SCameron Smith stream_closefile, 13*a486e66cSCameron Smith stream_readheader, 1447926302SCameron Smith posix_writeheader, 15*a486e66cSCameron Smith stream_readdatablock, 1647926302SCameron Smith posix_writedatablock, 1747926302SCameron Smith stream_constructname 1847926302SCameron Smith }; 1947926302SCameron Smith 20ecf8d2a9SCameron Smith void streamio_setup_read(phio_fp* f, GRStream* grs) { 2147926302SCameron Smith *f = (phio_fp) malloc(sizeof(struct streamio_file)); 2247926302SCameron Smith stream_fp sf = (stream_fp) *f; 23ecf8d2a9SCameron Smith sf->ops = &stream_ops; 24ecf8d2a9SCameron Smith sf->file = (int*) malloc(sizeof(int*)); 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->file = (int*) malloc(sizeof(int*)); 35ecf8d2a9SCameron Smith sf->mode = 'w'; 36ecf8d2a9SCameron Smith sf->grs = NULL; 3747926302SCameron Smith sf->rs = rs; 38d7abaf6cSCameron Smith } 39*a486e66cSCameron Smith 40*a486e66cSCameron Smith void streamio_set_gr(grstream grs) { 41*a486e66cSCameron Smith geomRestartStream = grs; 42*a486e66cSCameron Smith } 43*a486e66cSCameron Smith 44*a486e66cSCameron Smith grstream streamio_get_gr() { 45*a486e66cSCameron Smith return geomRestartStream; 46*a486e66cSCameron Smith } 47