1 #include <string> 2 #include <sstream> 3 #include <phastaIO.h> 4 #include "phio_stream.h" 5 namespace { 6 std::string appendPosix(const char* phrase) { 7 std::stringstream ss; 8 ss << phrase << "?"; 9 return ss.str(); 10 } 11 void traceEnter(const char* key, const char* aux="") { 12 fprintf(stderr, "CAKE entering %s %s\n", key, aux); 13 } 14 void traceExit(const char* key) { 15 fprintf(stderr, "CAKE exiting %s\n", key); 16 } 17 } 18 19 void stream_openfile( 20 const char filename[], 21 phio_fp f) { 22 traceEnter(__func__, filename); 23 stream_fp sf = (stream_fp) f; 24 if(sf->mode == 'w' && sf->rs != NULL) 25 sf->file = (int*) openRStreamWrite(sf->rs); 26 else if(sf->mode == 'r' && sf->grs != NULL) 27 sf->file = (int*) openGRStreamRead(sf->grs, filename); 28 else 29 fprintf(stderr, 30 "ERROR %s type of stream %s is unknown... exiting\n", 31 __func__, filename); 32 traceExit(__func__); 33 } 34 void stream_readheader( 35 int* fileDescriptor, 36 const char keyphrase[], 37 void* valueArray, 38 int* nItems, 39 const char datatype[], 40 const char iotype[] ) { 41 traceEnter(__func__, keyphrase); 42 std::string posixPhrase = appendPosix(keyphrase); 43 readHeader((FILE*)fileDescriptor, posixPhrase.c_str(), 44 (int*)valueArray, *nItems, iotype); 45 traceExit(__func__); 46 } 47 48 void stream_readdatablock( 49 int* fileDescriptor, 50 const char*, 51 void* valueArray, 52 int* nItems, 53 const char datatype[], 54 const char iotype[] ) { 55 traceEnter(__func__); 56 readDataBlock((FILE*)fileDescriptor, valueArray, *nItems, 57 datatype, iotype); 58 traceExit(__func__); 59 } 60 61 void stream_closefile(phio_fp f) { 62 traceEnter(__func__); 63 stream_fp sf = (stream_fp) f; 64 fclose((FILE*)sf->file); 65 traceExit(__func__); 66 } 67 68 void stream_constructname(const char* in, char* out) { 69 traceEnter(__func__); 70 sprintf(out, "%s", in); 71 traceExit(__func__); 72 } 73