xref: /phasta/phSolver/common/phIO.cc (revision 4c223e05d8d52fa76a5fb618d065168c0a695367)
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 
10*4c223e05SCameron Smith #define PHIO_TRACING 0
11*4c223e05SCameron Smith namespace {
12*4c223e05SCameron Smith   void trace(const char* key, const char* aux="", void* obj=NULL) {
13*4c223e05SCameron Smith     if(PHIO_TRACING)
14*4c223e05SCameron Smith       fprintf(stderr, "PHIO_TRACE entering %s %s %p\n", key, aux, obj);
15*4c223e05SCameron Smith   }
16*4c223e05SCameron Smith }
17*4c223e05SCameron Smith 
18d7abaf6cSCameron Smith #ifdef __cplusplus
19d7abaf6cSCameron Smith extern "C" {
20d7abaf6cSCameron Smith #endif
21d7abaf6cSCameron Smith 
2282f286aaSCameron Smith void phio_readheader(
23064bab1dSCameron Smith     phio_fp f,
24d1293ce9SCameron Smith     const  char keyphrase[],
25d1293ce9SCameron Smith     void* valueArray,
26d1293ce9SCameron Smith     int*  nItems,
27d1293ce9SCameron Smith     const char  datatype[],
28d1293ce9SCameron Smith     const char  iotype[] ) {
29064bab1dSCameron Smith   f->ops->readheader(f->file, keyphrase, valueArray,
30064bab1dSCameron Smith       nItems, datatype, iotype);
31d1293ce9SCameron Smith }
32fa18c524SCameron Smith void phio_writeheader(
3357517afcSCameron Smith     phio_fp f,
34fa18c524SCameron Smith     const char keyphrase[],
35fa18c524SCameron Smith     const void* valueArray,
36fa18c524SCameron Smith     const int* nItems,
37fa18c524SCameron Smith     const int* ndataItems,
38fa18c524SCameron Smith     const char datatype[],
39fa18c524SCameron Smith     const char iotype[] ) {
409ec3dd51SCameron Smith   f->ops->writeheader(f->file, keyphrase, valueArray,
419ec3dd51SCameron Smith       nItems, ndataItems, datatype, iotype);
42fa18c524SCameron Smith }
43f262839cSCameron Smith void phio_readdatablock(
44064bab1dSCameron Smith     phio_fp f,
45f262839cSCameron Smith     const  char keyphrase[],
46f262839cSCameron Smith     void* valueArray,
47f262839cSCameron Smith     int*  nItems,
48f262839cSCameron Smith     const char  datatype[],
49f262839cSCameron Smith     const char  iotype[] ) {
50064bab1dSCameron Smith   f->ops->readdatablock(f->file, keyphrase, valueArray,
51064bab1dSCameron Smith       nItems, datatype, iotype);
52f262839cSCameron Smith }
5366a3fa2cSCameron Smith void phio_writedatablock(
549ec3dd51SCameron Smith     phio_fp f,
5566a3fa2cSCameron Smith     const char keyphrase[],
5666a3fa2cSCameron Smith     const void* valueArray,
5766a3fa2cSCameron Smith     const int* nItems,
5866a3fa2cSCameron Smith     const char datatype[],
5966a3fa2cSCameron Smith     const char iotype[]) {
609ec3dd51SCameron Smith   f->ops->writedatablock(f->file, keyphrase, valueArray,
619ec3dd51SCameron Smith       nItems, datatype, iotype);
6266a3fa2cSCameron Smith }
63ab645d52SCameron Smith 
64ab645d52SCameron Smith void phio_constructName(
65a93de25bSCameron Smith     phio_fp f,
66ab645d52SCameron Smith     const char inName[],
67ab645d52SCameron Smith     char* outName) {
68a93de25bSCameron Smith   f->ops->constructname(inName, outName);
69ab645d52SCameron Smith }
70ab645d52SCameron Smith 
71ab645d52SCameron Smith void phio_openfile(
7282f286aaSCameron Smith     const char filename[],
73ab645d52SCameron Smith     phio_fp f) {
74*4c223e05SCameron Smith   trace("openfile",filename,f);
75ab645d52SCameron Smith   f->ops->openfile(filename, f);
7692bfab9aSCameron Smith }
77ab645d52SCameron Smith 
78ab645d52SCameron Smith void phio_closefile(phio_fp f) {
79*4c223e05SCameron Smith   trace("closefile","unknown",f);
80ab645d52SCameron Smith   f->ops->closefile(f);
81064bab1dSCameron Smith }
82ab645d52SCameron Smith 
83e81a6dc1SCameron Smith void phio_appendInt(char* dest, int v) {
8436adee64SCameron Smith   std::stringstream ss;
8536adee64SCameron Smith   ss << dest << v << '.';
8636adee64SCameron Smith   std::string s = ss.str();
8736adee64SCameron Smith   strcpy(dest, s.c_str());
8836adee64SCameron Smith }
89d7abaf6cSCameron Smith 
90d7abaf6cSCameron Smith #ifdef __cplusplus
91d7abaf6cSCameron Smith }
92d7abaf6cSCameron Smith #endif
93