1064bab1dSCameron Smith #include <stdio.h> 2064bab1dSCameron Smith #include <stdlib.h> 3064bab1dSCameron Smith #include <string> 4d1293ce9SCameron Smith #include "phIO.h" 5d1293ce9SCameron Smith #include "phComm.h" 6064bab1dSCameron Smith #include "phio_base.h" 7064bab1dSCameron Smith #include "phio_sync.h" 8064bab1dSCameron Smith #include "phio_posix.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[] ) { 28*9ec3dd51SCameron Smith f->ops->writeheader(f->file, keyphrase, valueArray, 29*9ec3dd51SCameron 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( 42*9ec3dd51SCameron 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[]) { 48*9ec3dd51SCameron Smith f->ops->writedatablock(f->file, keyphrase, valueArray, 49*9ec3dd51SCameron Smith nItems, datatype, iotype); 5066a3fa2cSCameron Smith } 5192bfab9aSCameron Smith void phio_openfile_read( 5282f286aaSCameron Smith const char filename[], 5392bfab9aSCameron Smith int* numFiles, 54064bab1dSCameron Smith phio_fp* fileDescriptor) { 55064bab1dSCameron Smith std::string fn(filename); 56064bab1dSCameron Smith std::string syncSuffix("-dat"); 57064bab1dSCameron Smith std::string posixSuffix(".dat"); 58064bab1dSCameron Smith if( fn.find(syncSuffix) != std::string::npos ) 59064bab1dSCameron Smith sync_openfile_read(filename, numFiles, fileDescriptor); 60064bab1dSCameron Smith else if( fn.find(posixSuffix) != std::string::npos ) 6157517afcSCameron Smith posix_openfile_read(filename, fileDescriptor); 62064bab1dSCameron Smith else { 63064bab1dSCameron Smith fprintf(stderr, 64064bab1dSCameron Smith "type of file %s is unknown... exiting\n", filename); 65064bab1dSCameron Smith exit(1); 6692bfab9aSCameron Smith } 67064bab1dSCameron Smith } 6892bfab9aSCameron Smith void phio_openfile_write( 6992bfab9aSCameron Smith const char filename[], 7082f286aaSCameron Smith int* numFiles, 71ade0e30fSCameron Smith int* numFields, 72ade0e30fSCameron Smith int* numPPF, 7357517afcSCameron Smith phio_fp* fileDescriptor) { 7457517afcSCameron Smith std::string fn(filename); 7557517afcSCameron Smith std::string syncSuffix("-dat"); 7657517afcSCameron Smith std::string posixSuffix(".dat"); 7757517afcSCameron Smith if( fn.find(syncSuffix) != std::string::npos ) 7857517afcSCameron Smith sync_openfile_write(filename, numFiles, numFields, numPPF, fileDescriptor); 7957517afcSCameron Smith else if( fn.find(posixSuffix) != std::string::npos ) 8057517afcSCameron Smith posix_openfile_write(filename, fileDescriptor); 8157517afcSCameron Smith else { 8257517afcSCameron Smith fprintf(stderr, 8357517afcSCameron Smith "type of file %s is unknown... exiting\n", filename); 8457517afcSCameron Smith exit(1); 8557517afcSCameron Smith } 8682f286aaSCameron Smith } 8782f286aaSCameron Smith void phio_restartname(int* step, char* filename) { 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 } 95064bab1dSCameron Smith 96