1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <cstring> 4 #include <string> 5 #include <sstream> 6 #include "phIO.h" 7 #include "phComm.h" 8 #include "phio_base.h" 9 #include "phio_sync.h" 10 #include "phio_posix.h" 11 12 void phio_readheader( 13 phio_fp f, 14 const char keyphrase[], 15 void* valueArray, 16 int* nItems, 17 const char datatype[], 18 const char iotype[] ) { 19 f->ops->readheader(f->file, keyphrase, valueArray, 20 nItems, datatype, iotype); 21 } 22 void phio_writeheader( 23 phio_fp f, 24 const char keyphrase[], 25 const void* valueArray, 26 const int* nItems, 27 const int* ndataItems, 28 const char datatype[], 29 const char iotype[] ) { 30 f->ops->writeheader(f->file, keyphrase, valueArray, 31 nItems, ndataItems, datatype, iotype); 32 } 33 void phio_readdatablock( 34 phio_fp f, 35 const char keyphrase[], 36 void* valueArray, 37 int* nItems, 38 const char datatype[], 39 const char iotype[] ) { 40 f->ops->readdatablock(f->file, keyphrase, valueArray, 41 nItems, datatype, iotype); 42 } 43 void phio_writedatablock( 44 phio_fp f, 45 const char keyphrase[], 46 const void* valueArray, 47 const int* nItems, 48 const char datatype[], 49 const char iotype[]) { 50 f->ops->writedatablock(f->file, keyphrase, valueArray, 51 nItems, datatype, iotype); 52 } 53 void phio_openfile_read( 54 const char filename[], 55 int* numFiles, 56 phio_fp* fileDescriptor) { 57 std::string fn(filename); 58 std::string syncSuffix("-dat"); 59 std::string posixSuffix(".dat"); 60 if( fn.find(syncSuffix) != std::string::npos ) 61 sync_openfile_read(fn.c_str(), numFiles, fileDescriptor); 62 else if( fn.find(posixSuffix) != std::string::npos ) 63 posix_openfile_read(fn.c_str(), fileDescriptor); 64 else { 65 posix_openfile_read(fn.c_str(), fileDescriptor); 66 /* 67 fprintf(stderr, 68 "type of file %s is unknown... exiting\n", filename); 69 exit(1); 70 */ 71 } 72 } 73 void phio_openfile_write( 74 const char filename[], 75 int* numFiles, 76 int* numFields, 77 int* numPPF, 78 phio_fp* fileDescriptor) { 79 std::string fn(filename); 80 std::string syncSuffix("-dat"); 81 std::string posixSuffix(".dat"); 82 if( fn.find(syncSuffix) != std::string::npos ) 83 sync_openfile_write(filename, numFiles, numFields, numPPF, fileDescriptor); 84 else if( fn.find(posixSuffix) != std::string::npos ) 85 posix_openfile_write(filename, fileDescriptor); 86 else { 87 posix_openfile_write(filename, fileDescriptor); 88 /*fprintf(stderr, 89 "type of file %s is unknown... exiting\n", filename); 90 exit(1); 91 */ 92 } 93 } 94 void phio_closefile_read(phio_fp f) { 95 f->ops->closefile_read(f); 96 } 97 void phio_closefile_write(phio_fp f) { 98 f->ops->closefile_write(f); 99 } 100 void phio_appendStep(char* dest, int v) { 101 std::stringstream ss; 102 ss << dest << v << '.'; 103 std::string s = ss.str(); 104 strcpy(dest, s.c_str()); 105 } 106