xref: /phasta/phSolver/common/phIO.cc (revision ab645d527a403248f92b1511f47c35aaadb4947d)
1064bab1dSCameron Smith #include <stdio.h>
2064bab1dSCameron Smith #include <stdlib.h>
336adee64SCameron Smith #include <cstring>
4064bab1dSCameron Smith #include <string>
536adee64SCameron Smith #include <sstream>
6d1293ce9SCameron Smith #include "phIO.h"
7d1293ce9SCameron Smith #include "phComm.h"
8064bab1dSCameron Smith #include "phio_base.h"
9f262839cSCameron Smith 
1082f286aaSCameron Smith void phio_readheader(
11064bab1dSCameron Smith     phio_fp f,
12d1293ce9SCameron Smith     const  char keyphrase[],
13d1293ce9SCameron Smith     void* valueArray,
14d1293ce9SCameron Smith     int*  nItems,
15d1293ce9SCameron Smith     const char  datatype[],
16d1293ce9SCameron Smith     const char  iotype[] ) {
17064bab1dSCameron Smith   f->ops->readheader(f->file, keyphrase, valueArray,
18064bab1dSCameron Smith       nItems, datatype, iotype);
19d1293ce9SCameron Smith }
20fa18c524SCameron Smith void phio_writeheader(
2157517afcSCameron Smith     phio_fp f,
22fa18c524SCameron Smith     const char keyphrase[],
23fa18c524SCameron Smith     const void* valueArray,
24fa18c524SCameron Smith     const int* nItems,
25fa18c524SCameron Smith     const int* ndataItems,
26fa18c524SCameron Smith     const char datatype[],
27fa18c524SCameron Smith     const char iotype[] ) {
289ec3dd51SCameron Smith   f->ops->writeheader(f->file, keyphrase, valueArray,
299ec3dd51SCameron Smith       nItems, ndataItems, datatype, iotype);
30fa18c524SCameron Smith }
31f262839cSCameron Smith void phio_readdatablock(
32064bab1dSCameron Smith     phio_fp f,
33f262839cSCameron Smith     const  char keyphrase[],
34f262839cSCameron Smith     void* valueArray,
35f262839cSCameron Smith     int*  nItems,
36f262839cSCameron Smith     const char  datatype[],
37f262839cSCameron Smith     const char  iotype[] ) {
38064bab1dSCameron Smith   f->ops->readdatablock(f->file, keyphrase, valueArray,
39064bab1dSCameron Smith       nItems, datatype, iotype);
40f262839cSCameron Smith }
4166a3fa2cSCameron Smith void phio_writedatablock(
429ec3dd51SCameron Smith     phio_fp f,
4366a3fa2cSCameron Smith     const char keyphrase[],
4466a3fa2cSCameron Smith     const void* valueArray,
4566a3fa2cSCameron Smith     const int* nItems,
4666a3fa2cSCameron Smith     const char datatype[],
4766a3fa2cSCameron Smith     const char iotype[]) {
489ec3dd51SCameron Smith   f->ops->writedatablock(f->file, keyphrase, valueArray,
499ec3dd51SCameron Smith       nItems, datatype, iotype);
5066a3fa2cSCameron Smith }
51*ab645d52SCameron Smith 
52*ab645d52SCameron Smith void phio_constructName(
53*ab645d52SCameron Smith     phio_format format,
54*ab645d52SCameron Smith     const char inName[],
55*ab645d52SCameron Smith     char* outName) {
56*ab645d52SCameron Smith   std::string fullname(inName);
57*ab645d52SCameron Smith   std::string gname("geombc");
58*ab645d52SCameron Smith   //sync restart and geombc gets '-dat'
59*ab645d52SCameron Smith   if( format == PHIO_SYNC )
60*ab645d52SCameron Smith     fullname.append("-dat");
61*ab645d52SCameron Smith   //posix geombc gets '.dat'
62*ab645d52SCameron Smith   else if( format == PHIO_POSIX &&
63*ab645d52SCameron Smith     fullname.find(gname) != std::string::npos )
64*ab645d52SCameron Smith       fullname.append(".dat");
65*ab645d52SCameron Smith   //posix restart gets nothing
66*ab645d52SCameron Smith   sprintf(outName, "%s", fullname.c_str());
67*ab645d52SCameron Smith }
68*ab645d52SCameron Smith 
69*ab645d52SCameron Smith void phio_openfile(
7082f286aaSCameron Smith     const char filename[],
71*ab645d52SCameron Smith     phio_fp f) {
72*ab645d52SCameron Smith   f->ops->openfile(filename, f);
7392bfab9aSCameron Smith }
74*ab645d52SCameron Smith 
75*ab645d52SCameron Smith void phio_closefile(phio_fp f) {
76*ab645d52SCameron Smith   f->ops->closefile(f);
77064bab1dSCameron Smith }
78*ab645d52SCameron Smith 
7936adee64SCameron Smith void phio_appendStep(char* dest, int v) {
8036adee64SCameron Smith   std::stringstream ss;
8136adee64SCameron Smith   ss << dest << v << '.';
8236adee64SCameron Smith   std::string s = ss.str();
8336adee64SCameron Smith   strcpy(dest, s.c_str());
8436adee64SCameron Smith }
85