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