X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fshoppinglist%2Fmain.cpp;h=449ef8be4d1f6042fec6a4be625d97ca651193a9;hb=e9653dffd0026fb3c02c91a4c0feca688a86c721;hp=5f88780a7c02e937ca4fcfe4bc7cc36fcfa84f54;hpb=52cbe8d99669f843f8f75c51128e2748584dd03a;p=r2c2.git diff --git a/source/shoppinglist/main.cpp b/source/shoppinglist/main.cpp index 5f88780..449ef8b 100644 --- a/source/shoppinglist/main.cpp +++ b/source/shoppinglist/main.cpp @@ -1,8 +1,15 @@ -#include +/* $Id$ + +This file is part of the MSP Märklin suite +Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + #include #include #include #include +#include using namespace std; using namespace Msp; @@ -11,7 +18,7 @@ class ShoppingList { public: ShoppingList(int, char **); - void print(ostream &); + void print(IO::Base &); private: class InventoryLoader: public DataFile::Loader { @@ -33,10 +40,8 @@ private: void track(unsigned); }; - typedef map TrackMap; - - TrackMap inventory; - TrackMap layout; + map inventory; + map layout; void load_inventory(const string &); void load_layout(const string &); @@ -45,7 +50,7 @@ private: int main(int argc, char **argv) { ShoppingList sl(argc, argv); - sl.print(cout); + sl.print(IO::cout); return 0; } @@ -76,40 +81,40 @@ void ShoppingList::load_layout(const string &fn) 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::iterator i=layout.begin(); i!=layout.end(); ++i) { - TrackMap::iterator j=inventory.find(i->first); + map::iterator j=inventory.find(i->first); if(j!=inventory.end()) { if(j->secondsecond) - out<<"track "<first<<' '<second-j->second<<";\n"; + IO::print(out, "track %d %d;\n", i->first, i->second-j->second); } else - out<<"track "<first<<' '<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::iterator i=layout.begin(); i!=layout.end(); ++i) { - TrackMap::iterator j=inventory.find(i->first); + map::iterator j=inventory.find(i->first); if(j!=inventory.end()) - out<<"track "<first<<' '<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::iterator i=inventory.begin(); i!=inventory.end(); ++i) { - TrackMap::iterator j=layout.find(i->first); + map::iterator j=layout.find(i->first); if(j!=layout.end()) { if(j->secondsecond) - out<<"track "<first<<' '<second-j->second<<";\n"; + IO::print(out, "track %d %d;\n", i->first, i->second-j->second); } else - out<<"track "<first<<' '<second<<";\n"; + IO::print(out, "track %d %d;\n", i->first, i->second); } } @@ -129,6 +134,7 @@ ShoppingList::LayoutLoader::LayoutLoader(ShoppingList &s): { add("track", &LayoutLoader::track); add("base"); + add("route"); } void ShoppingList::LayoutLoader::track(unsigned part)