X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fshoppinglist%2Fmain.cpp;h=276a4c7877d0f68ec68bc1302291c11995456216;hb=81ee4fbd16b472892b67b35ea85956423a2247ed;hp=2b8f5bf00abd7249768b37f5526f2b1cbd87ec79;hpb=cadb9f79feb379acd6712fba97af4f6696a413c5;p=r2c2.git diff --git a/source/shoppinglist/main.cpp b/source/shoppinglist/main.cpp index 2b8f5bf..276a4c7 100644 --- a/source/shoppinglist/main.cpp +++ b/source/shoppinglist/main.cpp @@ -1,23 +1,14 @@ -/* $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 #include -#include "libmarklin/articlenumber.h" using namespace std; using namespace Msp; -using namespace Marklin; -class ShoppingList: public Application +class ShoppingList: public RegisteredApplication { private: class InventoryLoader: public DataFile::Loader @@ -27,7 +18,7 @@ private: private: ShoppingList &sl; - void track(ArticleNumber, int); + void track(const string &, int); }; class LayoutLoader: public DataFile::Loader @@ -37,13 +28,11 @@ private: private: ShoppingList &sl; - void track(ArticleNumber); + void track(const string &); }; - map inventory; - map layout; - - static Application::RegApp reg; + map inventory; + map layout; public: ShoppingList(int, char **); @@ -54,8 +43,6 @@ private: }; -Application::RegApp ShoppingList::reg; - ShoppingList::ShoppingList(int argc, char **argv) { string inv_fn = "inventory"; @@ -70,37 +57,37 @@ ShoppingList::ShoppingList(int argc, char **argv) int ShoppingList::main() { IO::print("// Need to get:\n"); - for(map::iterator i=layout.begin(); i!=layout.end(); ++i) + for(map::iterator i=layout.begin(); i!=layout.end(); ++i) { - map::iterator j=inventory.find(i->first); + map::iterator j=inventory.find(i->first); if(j!=inventory.end()) { if(j->secondsecond) - IO::print("track %d %d;\n", i->first, i->second-j->second); + IO::print("track \"%s\" %d;\n", i->first, i->second-j->second); } else - IO::print("track %d %d;\n", i->first, i->second); + IO::print("track \"%s\" %d;\n", i->first, i->second); } IO::print("// Pre-existing:\n"); - for(map::iterator i=layout.begin(); i!=layout.end(); ++i) + for(map::iterator i=layout.begin(); i!=layout.end(); ++i) { - map::iterator j=inventory.find(i->first); + map::iterator j=inventory.find(i->first); if(j!=inventory.end()) - IO::print("track %d %d;\n", i->first, min(i->second, j->second)); + IO::print("track \"%s\" %d;\n", i->first, min(i->second, j->second)); } IO::print("// Unused:\n"); - for(map::iterator i=inventory.begin(); i!=inventory.end(); ++i) + for(map::iterator i=inventory.begin(); i!=inventory.end(); ++i) { - map::iterator j=layout.find(i->first); + map::iterator j=layout.find(i->first); if(j!=layout.end()) { if(j->secondsecond) - IO::print("track %d %d;\n", i->first, i->second-j->second); + IO::print("track \"%s\" %d;\n", i->first, i->second-j->second); } else - IO::print("track %d %d;\n", i->first, i->second); + IO::print("track \"%s\" %d;\n", i->first, i->second); } return 0; @@ -129,9 +116,9 @@ ShoppingList::InventoryLoader::InventoryLoader(ShoppingList &s): add("track", &InventoryLoader::track); } -void ShoppingList::InventoryLoader::track(ArticleNumber art_nr, int count) +void ShoppingList::InventoryLoader::track(const string &n, int count) { - sl.inventory[art_nr] += count; + sl.inventory[n] += count; } @@ -140,10 +127,14 @@ ShoppingList::LayoutLoader::LayoutLoader(ShoppingList &s): { add("track", &LayoutLoader::track); add("base"); + add("beamgate"); add("route"); + add("signal"); + add("terrain"); + add("zone"); } -void ShoppingList::LayoutLoader::track(ArticleNumber art_nr) +void ShoppingList::LayoutLoader::track(const string &n) { - ++sl.layout[art_nr]; + ++sl.layout[n]; }