-#include <fstream>
#include <iostream>
#include <map>
#include <msp/core/getopt.h>
-#include <msp/parser/loader.h>
-#include <msp/parser/parser.h>
+#include <msp/datafile/loader.h>
+#include <msp/datafile/parser.h>
using namespace std;
using namespace Msp;
ShoppingList(int, char **);
void print(ostream &);
private:
- class InventoryLoader: public Parser::Loader
+ class InventoryLoader: public DataFile::Loader
{
public:
InventoryLoader(ShoppingList &);
void track(unsigned, unsigned);
};
- class LayoutLoader: public Parser::Loader
+ class LayoutLoader: public DataFile::Loader
{
public:
LayoutLoader(ShoppingList &);
void track(unsigned);
};
- typedef map<unsigned, unsigned> TrackMap;
-
- TrackMap inventory;
- TrackMap layout;
+ map<unsigned, unsigned> inventory;
+ map<unsigned, unsigned> layout;
void load_inventory(const string &);
void load_layout(const string &);
void ShoppingList::load_inventory(const string &fn)
{
- ifstream in(fn.c_str());
- Parser::Parser parser(in, fn);
+ IO::File in(fn);
+ DataFile::Parser parser(in, fn);
InventoryLoader il(*this);
il.load(parser);
}
void ShoppingList::load_layout(const string &fn)
{
- ifstream in(fn.c_str());
- Parser::Parser parser(in, fn);
+ IO::File in(fn);
+ DataFile::Parser parser(in, fn);
LayoutLoader ll(*this);
ll.load(parser);
}
void ShoppingList::print(ostream &out)
{
out<<"// Need to get:\n";
- for(TrackMap::iterator i=layout.begin(); i!=layout.end(); ++i)
+ for(map<unsigned, unsigned>::iterator i=layout.begin(); i!=layout.end(); ++i)
{
- TrackMap::iterator j=inventory.find(i->first);
+ map<unsigned, unsigned>::iterator j=inventory.find(i->first);
if(j!=inventory.end())
{
if(j->second<i->second)
}
out<<"// Pre-existing:\n";
- for(TrackMap::iterator i=layout.begin(); i!=layout.end(); ++i)
+ for(map<unsigned, unsigned>::iterator i=layout.begin(); i!=layout.end(); ++i)
{
- TrackMap::iterator j=inventory.find(i->first);
+ map<unsigned, unsigned>::iterator j=inventory.find(i->first);
if(j!=inventory.end())
out<<"track "<<i->first<<' '<<min(i->second,j->second)<<";\n";
}
out<<"// Unused:\n";
- for(TrackMap::iterator i=inventory.begin(); i!=inventory.end(); ++i)
+ for(map<unsigned, unsigned>::iterator i=inventory.begin(); i!=inventory.end(); ++i)
{
- TrackMap::iterator j=layout.find(i->first);
+ map<unsigned, unsigned>::iterator j=layout.find(i->first);
if(j!=layout.end())
{
if(j->second<i->second)