1064bab1dSCameron Smith #include <stdio.h> 2064bab1dSCameron Smith #include <stdlib.h> 3*36adee64SCameron Smith #include <cstring> 4064bab1dSCameron Smith #include <string> 5*36adee64SCameron Smith #include <sstream> 6d1293ce9SCameron Smith #include "phIO.h" 7d1293ce9SCameron Smith #include "phComm.h" 8064bab1dSCameron Smith #include "phio_base.h" 9064bab1dSCameron Smith #include "phio_sync.h" 10064bab1dSCameron Smith #include "phio_posix.h" 11f262839cSCameron Smith 1282f286aaSCameron Smith void phio_readheader( 13064bab1dSCameron Smith phio_fp f, 14d1293ce9SCameron Smith const char keyphrase[], 15d1293ce9SCameron Smith void* valueArray, 16d1293ce9SCameron Smith int* nItems, 17d1293ce9SCameron Smith const char datatype[], 18d1293ce9SCameron Smith const char iotype[] ) { 19064bab1dSCameron Smith f->ops->readheader(f->file, keyphrase, valueArray, 20064bab1dSCameron Smith nItems, datatype, iotype); 21d1293ce9SCameron Smith } 22fa18c524SCameron Smith void phio_writeheader( 2357517afcSCameron Smith phio_fp f, 24fa18c524SCameron Smith const char keyphrase[], 25fa18c524SCameron Smith const void* valueArray, 26fa18c524SCameron Smith const int* nItems, 27fa18c524SCameron Smith const int* ndataItems, 28fa18c524SCameron Smith const char datatype[], 29fa18c524SCameron Smith const char iotype[] ) { 309ec3dd51SCameron Smith f->ops->writeheader(f->file, keyphrase, valueArray, 319ec3dd51SCameron Smith nItems, ndataItems, datatype, iotype); 32fa18c524SCameron Smith } 33f262839cSCameron Smith void phio_readdatablock( 34064bab1dSCameron Smith phio_fp f, 35f262839cSCameron Smith const char keyphrase[], 36f262839cSCameron Smith void* valueArray, 37f262839cSCameron Smith int* nItems, 38f262839cSCameron Smith const char datatype[], 39f262839cSCameron Smith const char iotype[] ) { 40064bab1dSCameron Smith f->ops->readdatablock(f->file, keyphrase, valueArray, 41064bab1dSCameron Smith nItems, datatype, iotype); 42f262839cSCameron Smith } 4366a3fa2cSCameron Smith void phio_writedatablock( 449ec3dd51SCameron Smith phio_fp f, 4566a3fa2cSCameron Smith const char keyphrase[], 4666a3fa2cSCameron Smith const void* valueArray, 4766a3fa2cSCameron Smith const int* nItems, 4866a3fa2cSCameron Smith const char datatype[], 4966a3fa2cSCameron Smith const char iotype[]) { 509ec3dd51SCameron Smith f->ops->writedatablock(f->file, keyphrase, valueArray, 519ec3dd51SCameron Smith nItems, datatype, iotype); 5266a3fa2cSCameron Smith } 5392bfab9aSCameron Smith void phio_openfile_read( 5482f286aaSCameron Smith const char filename[], 5592bfab9aSCameron Smith int* numFiles, 56064bab1dSCameron Smith phio_fp* fileDescriptor) { 57064bab1dSCameron Smith std::string fn(filename); 58064bab1dSCameron Smith std::string syncSuffix("-dat"); 59064bab1dSCameron Smith std::string posixSuffix(".dat"); 60064bab1dSCameron Smith if( fn.find(syncSuffix) != std::string::npos ) 61*36adee64SCameron Smith sync_openfile_read(fn.c_str(), numFiles, fileDescriptor); 62064bab1dSCameron Smith else if( fn.find(posixSuffix) != std::string::npos ) 63*36adee64SCameron Smith posix_openfile_read(fn.c_str(), fileDescriptor); 64064bab1dSCameron Smith else { 65064bab1dSCameron Smith fprintf(stderr, 66064bab1dSCameron Smith "type of file %s is unknown... exiting\n", filename); 67064bab1dSCameron Smith exit(1); 6892bfab9aSCameron Smith } 69064bab1dSCameron Smith } 7092bfab9aSCameron Smith void phio_openfile_write( 7192bfab9aSCameron Smith const char filename[], 7282f286aaSCameron Smith int* numFiles, 73ade0e30fSCameron Smith int* numFields, 74ade0e30fSCameron Smith int* numPPF, 7557517afcSCameron Smith phio_fp* fileDescriptor) { 7657517afcSCameron Smith std::string fn(filename); 7757517afcSCameron Smith std::string syncSuffix("-dat"); 7857517afcSCameron Smith std::string posixSuffix(".dat"); 7957517afcSCameron Smith if( fn.find(syncSuffix) != std::string::npos ) 8057517afcSCameron Smith sync_openfile_write(filename, numFiles, numFields, numPPF, fileDescriptor); 8157517afcSCameron Smith else if( fn.find(posixSuffix) != std::string::npos ) 8257517afcSCameron Smith posix_openfile_write(filename, fileDescriptor); 8357517afcSCameron Smith else { 8457517afcSCameron Smith fprintf(stderr, 8557517afcSCameron Smith "type of file %s is unknown... exiting\n", filename); 8657517afcSCameron Smith exit(1); 8757517afcSCameron Smith } 8882f286aaSCameron Smith } 89064bab1dSCameron Smith void phio_closefile_read(phio_fp f) { 90064bab1dSCameron Smith f->ops->closefile_read(f); 91a7c8a483SCameron Smith } 9257517afcSCameron Smith void phio_closefile_write(phio_fp f) { 9357517afcSCameron Smith f->ops->closefile_write(f); 94a7c8a483SCameron Smith } 95*36adee64SCameron Smith void phio_appendStep(char* dest, int v) { 96*36adee64SCameron Smith std::stringstream ss; 97*36adee64SCameron Smith ss << dest << v << '.'; 98*36adee64SCameron Smith std::string s = ss.str(); 99*36adee64SCameron Smith strcpy(dest, s.c_str()); 100*36adee64SCameron Smith } 101