xref: /phasta/phSolver/common/streamio.cc (revision d5e0af7b98f8bc43077e71e0916fe20709c24ee9)
147926302SCameron Smith #include <stdio.h>
247926302SCameron Smith #include <stdlib.h>
356813794SCameron Smith #include <cassert>
4d7abaf6cSCameron Smith #include "streamio.h"
547926302SCameron Smith #include "phio_stream.h"
647926302SCameron Smith #include "phio_posix.h"
747926302SCameron Smith #include "phio_base.h"
8d7abaf6cSCameron Smith 
940b3285dSBenjamin Matthews grstream geomRestartStream;
1040b3285dSBenjamin Matthews rstream restartStream;
11a486e66cSCameron Smith 
1247926302SCameron Smith static struct phio_ops stream_ops = {
13ecf8d2a9SCameron Smith   stream_openfile,
1447926302SCameron Smith   stream_closefile,
15a486e66cSCameron Smith   stream_readheader,
16ea868eb1SCameron Smith   stream_writeheader,
17a486e66cSCameron Smith   stream_readdatablock,
18ea868eb1SCameron Smith   stream_writedatablock,
1947926302SCameron Smith   stream_constructname
2047926302SCameron Smith };
2147926302SCameron Smith 
streamio_setup_r(phio_fp * f,RStream * rs,char mode)22*d5e0af7bSCameron Smith void streamio_setup_r(phio_fp* f, RStream* rs, char mode) {
2356813794SCameron Smith   assert(rs);
24*d5e0af7bSCameron Smith   *f = (phio_fp) malloc(sizeof(struct streamio_file));
2556813794SCameron Smith   stream_fp sf = (stream_fp) *f;
26*d5e0af7bSCameron Smith   sf->ops = &stream_ops;
27*d5e0af7bSCameron Smith   sf->mode = mode;
28*d5e0af7bSCameron Smith   sf->grs = NULL;
29*d5e0af7bSCameron Smith   sf->rs = rs;
3056813794SCameron Smith }
3156813794SCameron Smith 
streamio_setup_read(phio_fp * f,GRStream * grs)32ecf8d2a9SCameron Smith void streamio_setup_read(phio_fp* f, GRStream* grs) {
3347926302SCameron Smith   *f = (phio_fp) malloc(sizeof(struct streamio_file));
3447926302SCameron Smith   stream_fp sf = (stream_fp) *f;
35ecf8d2a9SCameron Smith   sf->ops = &stream_ops;
36ecf8d2a9SCameron Smith   sf->mode = 'r';
3747926302SCameron Smith   sf->grs = grs;
38ecf8d2a9SCameron Smith   sf->rs = NULL;
39d7abaf6cSCameron Smith }
4047926302SCameron Smith 
streamio_setup_write(phio_fp * f,RStream * rs)41ecf8d2a9SCameron Smith void streamio_setup_write(phio_fp* f, RStream* rs) {
4247926302SCameron Smith   *f = (phio_fp) malloc(sizeof(struct streamio_file));
4347926302SCameron Smith   stream_fp sf = (stream_fp) *f;
44ecf8d2a9SCameron Smith   sf->ops = &stream_ops;
45ecf8d2a9SCameron Smith   sf->mode = 'w';
46ecf8d2a9SCameron Smith   sf->grs = NULL;
4747926302SCameron Smith   sf->rs = rs;
48d7abaf6cSCameron Smith }
49a486e66cSCameron Smith 
streamio_set_gr(grstream grs)50a486e66cSCameron Smith void streamio_set_gr(grstream grs) {
51a486e66cSCameron Smith   geomRestartStream = grs;
52a486e66cSCameron Smith }
53a486e66cSCameron Smith 
streamio_get_gr()54a486e66cSCameron Smith grstream streamio_get_gr() {
55a486e66cSCameron Smith   return geomRestartStream;
56a486e66cSCameron Smith }
57ea868eb1SCameron Smith 
streamio_set_r(rstream rs)58ea868eb1SCameron Smith void streamio_set_r(rstream rs) {
59ea868eb1SCameron Smith   restartStream = rs;
60ea868eb1SCameron Smith }
61ea868eb1SCameron Smith 
streamio_get_r()62ea868eb1SCameron Smith rstream streamio_get_r() {
63ea868eb1SCameron Smith   return restartStream;
64ea868eb1SCameron Smith }
65