#include <iostream>
#include <strstream>
#include <vector>
#include "dataio.h"
#include <fstream>
class fileinfo {
public:
string fname;
vector <string> path;
string type;
};
int main()
{
string prog;
fileinfo fi;
unsigned runs;
bool print_log;
unsigned long imax;
bool ask;
bool nocomment;
dataio cfg, fileinfoio, process;
ifstream f("sampsec.txt");
if(!f) {
cout << "main:error: can't open input files"<< endl;
return 1;
}
cfg.add("prog-name", &prog);
cfg.add("files", &fileinfoio);
fileinfoio.add("file-name", &fi.fname);
fileinfoio.add("default-path", &fi.path);
fileinfoio.add("default file type", &fi.type);
cfg.add("process", &process);
process.add(&runs);
process.add("print-log-on", &print_log);
process.add("max-iter", &imax); process.addcomment("max-iter", "iteration limit");
process.add("ask-to-user", &ask); process.additemcomment(&ask, "if exception occur, ask to user");
cfg.add("print-comment-off", &nocomment);
cfg.addcomment("this is win ini like config example");
cfg.addcomment("contain non win ini standard features");
cfg.addcomment("print-comment-off", "no process comment printing mode");
cfg.ignorecase(true);
cfg.attribseparator='=';
cfg.sectionnameopen = '[';
cfg.sectionnameclose = ']';
cfg.columnseparator=' ';
cfg.extendedmode = false;
cout << "readding config file\n";
f >> cfg;
cout << "main: config loaded...\n";
cout << "loaded data\n";
cout << cfg << endl;
cout << "now, cfg in CSV (with columnseparator=\'\\t\')\n";
cfg.ignorecase(true);
cfg.attribseparator='\0';
cfg.sectionnameopen = '\0';
cfg.sectionnameclose = '\0';
cfg.columnseparator='\t';
cout << cfg;
}