xref: /phasta/phSolver/common/phio_stream.cc (revision a486e66cd1a203504dc61f59920441d8dcf90091)
1 #include <string>
2 #include <sstream>
3 #include <phastaIO.h>
4 #include "phio_stream.h"
5 namespace {
6   std::string appendPosix(const char* phrase) {
7     std::stringstream ss;
8     ss << phrase << "?";
9     return ss.str();
10   }
11   void traceEnter(const char* key, const char* aux="") {
12     fprintf(stderr, "CAKE entering %s %s\n", key, aux);
13   }
14   void traceExit(const char* key) {
15     fprintf(stderr, "CAKE exiting %s\n", key);
16   }
17 }
18 
19 void stream_openfile(
20     const char filename[],
21     phio_fp f) {
22   traceEnter(__func__, filename);
23   stream_fp sf = (stream_fp) f;
24   if(sf->mode == 'w' && sf->rs != NULL)
25     sf->file = (int*) openRStreamWrite(sf->rs);
26   else if(sf->mode == 'r' && sf->grs != NULL)
27     sf->file = (int*) openGRStreamRead(sf->grs, filename);
28   else
29     fprintf(stderr,
30         "ERROR %s type of stream %s is unknown... exiting\n",
31         __func__, filename);
32   traceExit(__func__);
33 }
34 void stream_readheader(
35     int* fileDescriptor,
36     const  char keyphrase[],
37     void* valueArray,
38     int*  nItems,
39     const char  datatype[],
40     const char  iotype[] ) {
41   traceEnter(__func__, keyphrase);
42   std::string posixPhrase = appendPosix(keyphrase);
43   readHeader((FILE*)fileDescriptor, posixPhrase.c_str(),
44       (int*)valueArray, *nItems, iotype);
45   traceExit(__func__);
46 }
47 
48 void stream_readdatablock(
49     int* fileDescriptor,
50     const  char*,
51     void* valueArray,
52     int*  nItems,
53     const char  datatype[],
54     const char  iotype[] ) {
55   traceEnter(__func__);
56   readDataBlock((FILE*)fileDescriptor, valueArray, *nItems,
57       datatype, iotype);
58   traceExit(__func__);
59 }
60 
61 void stream_closefile(phio_fp f) {
62   traceEnter(__func__);
63   stream_fp sf = (stream_fp) f;
64   fclose((FILE*)sf->file);
65   traceExit(__func__);
66 }
67 
68 void stream_constructname(const char* in, char* out) {
69   traceEnter(__func__);
70   sprintf(out, "%s", in);
71   traceExit(__func__);
72 }
73