xref: /phasta/phSolver/common/streamio.cc (revision ea868eb1c17e8b2a160bb27c128290bdf49f8ce8)
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