Skip to content
Snippets Groups Projects
Commit 08e40252 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

corr.

leichte Änderung an y08: #tables comment now inline
parent 1e0309de
No related branches found
No related tags found
No related merge requests found
......@@ -24,56 +24,59 @@ int err;
//***************************************************************************//
void COlo::SaveHeader( FILE *fd, bool isdata )
void COlo::SaveHeader( FILE *file, bool isdata )
// written for file format y08
{
string out;
fprintf( fd, "Meta:\n"
fprintf( file, "Meta:\n"
" format: frida/y08 for yaml1\n"
" type: %s\n",
isdata ? "generic tabular data" : "frida2 curve" );
fprintf( fd, "History:\n" );
fprintf( file, "History:\n" );
for ( uint i=0; i<lDoc.size(); i++ )
fprintf( fd, "- %s\n", yaml(lDoc[i]).c_str() );
fprintf( file, "- %s\n", yaml(lDoc[i]).c_str() );
out = string( "saved as " ) + name + " on " +
mystd::myasctime(mystd::justnow(),0);
fprintf( fd, "- \%s\n", yaml( out ).c_str() );
fprintf( file, "- \%s\n", yaml( out ).c_str() );
fprintf( fd, "Coord:\n" );
fprintf( fd, " x:\n name: %s\n unit: %s\n",
fprintf( file, "Coord:\n" );
fprintf( file, " x:\n name: %s\n unit: %s\n",
yaml(xco.name).c_str(), yaml(xco.unit).c_str() );
fprintf( fd, " y:\n name: %s\n unit: %s\n",
fprintf( file, " y:\n name: %s\n unit: %s\n",
yaml(yco.name).c_str(), yaml(yco.unit).c_str() );
for ( uint i=0; i<ZCo.size(); i++ )
fprintf( fd, " z%u:\n name: %s\n unit: %s\n",
fprintf( file, " z%u:\n name: %s\n unit: %s\n",
i, yaml(ZCo[i].name).c_str(), yaml(ZCo[i].unit).c_str() );
fprintf( fd, "Param:\n" );
fprintf( file, "Param:\n" );
for ( uint i=0; i<RPar.size(); i++ )
fprintf( fd, " -\n name: %s\n unit: %s\n value: %20.15g\n",
fprintf( file,
" -\n name: %s\n unit: %s\n value: %20.15g\n",
yaml(RPar[i].Co.name).c_str(),
yaml(RPar[i].Co.unit).c_str(),
RPar[i].val );
fprintf( file, "Tables: # %zu tables follow\n", nScan() );
}
//! Write header in format ASCII-01
void COlo::SaveHeader_a01(FILE *fd)
void COlo::SaveHeader_a01(FILE *file)
{
fprintf( fd, "fil %s\n", name.c_str() );
fprintf( file, "fil %s\n", name.c_str() );
lDoc.push_back("saved as "+name+" on "+
mystd::myasctime(mystd::justnow(),0));
for ( uint i=0; i<lDoc.size(); i++ )
fprintf( fd, "doc %s\n", lDoc[i].c_str() );
fprintf( file, "doc %s\n", lDoc[i].c_str() );
fprintf( fd, "x %s\n", xco.to_a01().c_str() );
fprintf( fd, "y %s\n", yco.to_a01().c_str() );
fprintf( file, "x %s\n", xco.to_a01().c_str() );
fprintf( file, "y %s\n", yco.to_a01().c_str() );
for ( uint i=0; i<ZCo.size(); i++ )
fprintf( fd, "z%-2u %s\n", i, ZCo[i].to_a01().c_str() );
fprintf( file, "z%-2u %s\n", i, ZCo[i].to_a01().c_str() );
for ( uint i=0; i<RPar.size(); i++ )
fprintf( fd, "rpa %20.15g %s\n",
fprintf( file, "rpa %20.15g %s\n",
RPar[i].val, RPar[i].Co.to_a01().c_str() );
}
......@@ -96,11 +99,9 @@ COld::COld( class COlc const* c )
//! Save bulk of online file in one of several formats.
void COld::SaveBody( FILE *file, string fmt )
void COld::SaveBody( FILE *file, const string& fmt ) const
{
if( fmt=="y08" ){
fprintf( file, "# %zu tables\n", VS.size() );
fprintf( file, "Tables:\n" );
for( size_t j=0; j<VS.size(); j++ ){
fprintf( file, " - # table %zu\n", j );
VS[j].Save( file, fmt );
......@@ -169,14 +170,16 @@ uint COld::nPts() const {
//***************************************************************************//
void COlc::SaveBody( FILE *file )
void COlc::SaveBody( FILE *file, const string& fmt ) const
// written for file format ASCII-01
{
fprintf(file, "#j %zu\n", VC.size());
for (size_t j=0; j<VC.size(); j++) {
fprintf(file, "scn %zu\n", j);
VC[j].Save(file);
}
if ( fmt=="y08" ) {
for( size_t j=0; j<nScan(); j++ ){
fprintf( file, " - # table %zu\n", j );
VC[j].Save( file, fmt );
}
} else
throw "curve saving not implemented for format " + fmt;
}
//***************************************************************************//
......@@ -193,26 +196,19 @@ void CEle::Save( FILE *file, string fmt )
if (Typ==DATA) {
D()->SaveBody( file, fmt );
} else if (Typ==CURVE) {
C()->SaveBody( file );
C()->SaveBody( file, fmt );
} else
throw string( "FATAL: invalid Typ in Save" );
P()->as_on_disk = true;
} else if( fmt=="a01"){
fprintf(file, "ASCII-01 JWu\n");
if (Typ==CURVE)
fprintf(file, "typ C\n");
else if(Typ==DATA)
if(Typ==DATA)
fprintf(file, "typ D\n");
else
throw string( "FATAL: invalid Typ in Save" );
throw string( "FATAL: ASCII-01 save only for data files" );
P()->SaveHeader_a01(file);
if (Typ==DATA) {
D()->SaveBody( file, fmt );
} else if (Typ==CURVE) {
C()->SaveBody( file );
} else
throw string( "FATAL: invalid Typ in Save" );
D()->SaveBody( file, fmt );
fprintf(file, "eof\n");
P()->as_on_disk = true;
......
......@@ -48,7 +48,7 @@ class COld : public COlo { // on-line data file
uint nPts(uint j) const;
uint nPts() const; // 0 unless all spectra j have same nPts(j)
void SaveBody( FILE *fd, string fmt );
void SaveBody( FILE *file, const string& fmt ) const;
};
class COlc : public COlo { // on-line curves
......@@ -81,7 +81,7 @@ class COlc : public COlo { // on-line curves
vector<string> pInfo() const;
string pInfoCat() const;
void SaveBody(FILE *fd);
void SaveBody( FILE *file, const string& fmt ) const;
};
// the following is needed to pack (pointers to) COld and COlc into ONE vector :
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment