#include <iostream>
#include <strstream>
#include "dataio.h"
#include <fstream>
class cfg {
public:
vector <string> path;
unsigned maxiter;
bool printlog;
string defaultlogfile;
bool read(istream &f) {
dataio io;
io.attribseparator='=';
io.columnseparator=' ';
io.add("path", &path);
io.add("log-file", &defaultlogfile);
io.add("print-log-on", &printlog);
io.add("iter-limit", &maxiter);
f >> io;
return true;
}
bool read(const char *filename) {
ifstream f(filename);
if(!f)
return false;
return read(f);
}
bool write(ostream &f)
{
dataio io;
io.attribseparator='=';
io.columnseparator=';';
io.add("path", &path);
io.add("log-file", &defaultlogfile);
io.add("print-log-on", &printlog);
io.add("iter-limit", &maxiter);
io.addcomment("This is config file like data");
io.addcomment("path", "the path list");
io.addcomment("log-file", "log file name");
io.addcomment("iter-limit", "maximum number of iteration");
f << io;
return true;
}
bool write(const char *filename)
{
ofstream f(filename);
if(!f)
return false;
return write(f);
}
bool writeCSV(ostream &f)
{
dataio io;
io.add("path", &path);
io.add("log-file", &defaultlogfile);
io.add("print-log-on", &printlog);
io.add("iter-limit", &maxiter);
f << io;
return true;
}
bool writeCSV(const char *filename)
{
ofstream f(filename);
if(!f)
return false;
return writeCSV(f);
}
};
int main()
{
cfg progcfg;
if(!progcfg.read("sampattrib.txt")){
cout << "main:error: can't read input files"<< endl;
return 1;
}
cout << "configuration loaded\n";
cout << "progcfg.path.size(): " << progcfg.path.size() << endl;
cout << "progcfg.maxiter = " << progcfg.maxiter << endl;
progcfg.write(cout);
cout << "now, config values as CSV data (with separator \'\\t\' ):" << endl;
progcfg.writeCSV(cout);
}