-#include <iostream>
+/* $Id$
+
+This file is part of the MSP Märklin suite
+Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
#include <map>
#include <msp/core/getopt.h>
#include <msp/datafile/loader.h>
#include <msp/datafile/parser.h>
+#include <msp/io/print.h>
using namespace std;
using namespace Msp;
{
public:
ShoppingList(int, char **);
- void print(ostream &);
+ void print(IO::Base &);
private:
class InventoryLoader: public DataFile::Loader
{
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 &);
int main(int argc, char **argv)
{
ShoppingList sl(argc, argv);
- sl.print(cout);
+ sl.print(IO::cout);
return 0;
}
ll.load(parser);
}
-void ShoppingList::print(ostream &out)
+void ShoppingList::print(IO::Base &out)
{
- out<<"// Need to get:\n";
- for(TrackMap::iterator i=layout.begin(); i!=layout.end(); ++i)
+ IO::print(out, "// Need to get:\n");
+ 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<<"track "<<i->first<<' '<<i->second-j->second<<";\n";
+ IO::print(out, "track %d %d;\n", i->first, i->second-j->second);
}
else
- out<<"track "<<i->first<<' '<<i->second<<";\n";
+ IO::print(out, "track %d %d;\n", i->first, i->second);
}
- out<<"// Pre-existing:\n";
- for(TrackMap::iterator i=layout.begin(); i!=layout.end(); ++i)
+ IO::print(out, "// Pre-existing:\n");
+ 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";
+ IO::print(out, "track %d %d;\n", i->first, min(i->second, j->second));
}
- out<<"// Unused:\n";
- for(TrackMap::iterator i=inventory.begin(); i!=inventory.end(); ++i)
+ IO::print(out, "// Unused:\n");
+ 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)
- out<<"track "<<i->first<<' '<<i->second-j->second<<";\n";
+ IO::print(out, "track %d %d;\n", i->first, i->second-j->second);
}
else
- out<<"track "<<i->first<<' '<<i->second<<";\n";
+ IO::print(out, "track %d %d;\n", i->first, i->second);
}
}
{
add("track", &LayoutLoader::track);
add("base");
+ add("route");
}
void ShoppingList::LayoutLoader::track(unsigned part)