#include <string>
#include <iostream>
#include <strstream>
#include <vector>
#include "dataio.h"
#include <fstream>
class stock {
public:
string product;
int unit;
double weight;
double price;
};
class stockio : public dataio {
public:
vector <stock> *data;
void startinblock(unsigned i)
{
#ifdef _DEBUG_
cout << "startinblock: i = " << i << endl;
#endif
if(!data)
return;
clear();
data->push_back(stock());
add("product", &(*data)[i].product );
add("unit", &(*data)[i].unit);
add("weight of unit", &(*data)[i].weight);
add("price", &(*data)[i].price);
}
void validate(unsigned i)
{
if(!setted()) {
cout << "warn: stockio::validate:column " << i <<
" some value is missing or invalid\n";
}
}
bool startoutblock(unsigned i)
{
#ifdef _DEBUG_
cout << "startoutblock: i = " << i << endl;
#endif
if(!data || (i >= data->size()) )
return false;
clear();
ostrstream ostr;
ostr << i << "-th item" << ends;
addcomment(ostr.str());
add("product", &(*data)[i].product );
add("unit", &(*data)[i].unit);
add("weight of unit", &(*data)[i].weight);
add("price", &(*data)[i].price);
return true;
}
stockio():dataio() {data=0;}
stockio(vector <stock> &stocklist) : dataio()
{data = &stocklist; }
void set(vector <stock> &stocklist)
{data = &stocklist;}
};
int main()
{
vector <stock> food;
vector <stock> bazar;
stockio io(food);
ifstream f("samptable.txt");
if(!f) {
cout << "main:error: can't open input files"<< endl;
return 1;
}
io.ignorecase(true);
io.columnoriented = true;
io.istable = true;
io.decimal(',');
cout << "main: readding data" << endl;
f >> io;
cout << "main: data loaded. now, writing...\n";
cout << "food.size() = " << food.size() << endl;
io.decimal('.');
cout << io;
io.set(bazar);
io.decimal(',');
f >> io;
cout << "main: new data loaded...\n";
cout << "bazar.size() = " << bazar.size() << endl;
io.decimal('.');
cout << io;
cout << "now, outputting bazar as record list...\n";
io.columnoriented = false;
io.istable = false;
dataio recio;
recio.add("item", (dataio *)&io);
cout << recio;
}