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 10*4c223e05SCameron Smith #define PHIO_TRACING 0 11*4c223e05SCameron Smith namespace { 12*4c223e05SCameron Smith void trace(const char* key, const char* aux="", void* obj=NULL) { 13*4c223e05SCameron Smith if(PHIO_TRACING) 14*4c223e05SCameron Smith fprintf(stderr, "PHIO_TRACE entering %s %s %p\n", key, aux, obj); 15*4c223e05SCameron Smith } 16*4c223e05SCameron Smith } 17*4c223e05SCameron Smith 18d7abaf6cSCameron Smith #ifdef __cplusplus 19d7abaf6cSCameron Smith extern "C" { 20d7abaf6cSCameron Smith #endif 21d7abaf6cSCameron Smith 2282f286aaSCameron Smith void phio_readheader( 23064bab1dSCameron Smith phio_fp f, 24d1293ce9SCameron Smith const char keyphrase[], 25d1293ce9SCameron Smith void* valueArray, 26d1293ce9SCameron Smith int* nItems, 27d1293ce9SCameron Smith const char datatype[], 28d1293ce9SCameron Smith const char iotype[] ) { 29064bab1dSCameron Smith f->ops->readheader(f->file, keyphrase, valueArray, 30064bab1dSCameron Smith nItems, datatype, iotype); 31d1293ce9SCameron Smith } 32fa18c524SCameron Smith void phio_writeheader( 3357517afcSCameron Smith phio_fp f, 34fa18c524SCameron Smith const char keyphrase[], 35fa18c524SCameron Smith const void* valueArray, 36fa18c524SCameron Smith const int* nItems, 37fa18c524SCameron Smith const int* ndataItems, 38fa18c524SCameron Smith const char datatype[], 39fa18c524SCameron Smith const char iotype[] ) { 409ec3dd51SCameron Smith f->ops->writeheader(f->file, keyphrase, valueArray, 419ec3dd51SCameron Smith nItems, ndataItems, datatype, iotype); 42fa18c524SCameron Smith } 43f262839cSCameron Smith void phio_readdatablock( 44064bab1dSCameron Smith phio_fp f, 45f262839cSCameron Smith const char keyphrase[], 46f262839cSCameron Smith void* valueArray, 47f262839cSCameron Smith int* nItems, 48f262839cSCameron Smith const char datatype[], 49f262839cSCameron Smith const char iotype[] ) { 50064bab1dSCameron Smith f->ops->readdatablock(f->file, keyphrase, valueArray, 51064bab1dSCameron Smith nItems, datatype, iotype); 52f262839cSCameron Smith } 5366a3fa2cSCameron Smith void phio_writedatablock( 549ec3dd51SCameron Smith phio_fp f, 5566a3fa2cSCameron Smith const char keyphrase[], 5666a3fa2cSCameron Smith const void* valueArray, 5766a3fa2cSCameron Smith const int* nItems, 5866a3fa2cSCameron Smith const char datatype[], 5966a3fa2cSCameron Smith const char iotype[]) { 609ec3dd51SCameron Smith f->ops->writedatablock(f->file, keyphrase, valueArray, 619ec3dd51SCameron Smith nItems, datatype, iotype); 6266a3fa2cSCameron Smith } 63ab645d52SCameron Smith 64ab645d52SCameron Smith void phio_constructName( 65a93de25bSCameron Smith phio_fp f, 66ab645d52SCameron Smith const char inName[], 67ab645d52SCameron Smith char* outName) { 68a93de25bSCameron Smith f->ops->constructname(inName, outName); 69ab645d52SCameron Smith } 70ab645d52SCameron Smith 71ab645d52SCameron Smith void phio_openfile( 7282f286aaSCameron Smith const char filename[], 73ab645d52SCameron Smith phio_fp f) { 74*4c223e05SCameron Smith trace("openfile",filename,f); 75ab645d52SCameron Smith f->ops->openfile(filename, f); 7692bfab9aSCameron Smith } 77ab645d52SCameron Smith 78ab645d52SCameron Smith void phio_closefile(phio_fp f) { 79*4c223e05SCameron Smith trace("closefile","unknown",f); 80ab645d52SCameron Smith f->ops->closefile(f); 81064bab1dSCameron Smith } 82ab645d52SCameron Smith 83e81a6dc1SCameron Smith void phio_appendInt(char* dest, int v) { 8436adee64SCameron Smith std::stringstream ss; 8536adee64SCameron Smith ss << dest << v << '.'; 8636adee64SCameron Smith std::string s = ss.str(); 8736adee64SCameron Smith strcpy(dest, s.c_str()); 8836adee64SCameron Smith } 89d7abaf6cSCameron Smith 90d7abaf6cSCameron Smith #ifdef __cplusplus 91d7abaf6cSCameron Smith } 92d7abaf6cSCameron Smith #endif 93