1 // Copyright (C) 2009 Ben Asselstine
3 // This program is free software; you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation; either version 3 of the License, or
6 // (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU Library General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17 #ifndef STACKREFLIST_H
18 #define STACKREFLIST_H
25 //! lightweight list of stacks.
26 class StackReflist: public std::list<Stack*>
29 //! Default Constructor.
32 //! Alternate constructor. Create the list from a player's stacklist.
33 StackReflist(Stacklist *, bool skip_parked_stacks = false);
35 //! Alternate constructor.
36 StackReflist(std::list<Stack*> stacks, bool skip_parked_stacks = false);
41 void addStack(Stack *s);
43 //! Return true if the stack with the given id was deleted from the list.
44 bool removeStack(guint32 stack_id);
46 //! Return true if this list contains the given stack id.
47 bool contains(guint32 stack_id) const;
49 guint32 countArmies() const;
51 StackReflist::iterator eraseStack(StackReflist::iterator it);
52 StackReflist::iterator eraseStack(StackReflist::iterator it, guint32 id);
55 Stack *getStackById(guint32 id) const;
57 typedef std::map<guint32, Stack*> IdMap;
58 //! A map to quickly lookup the stack by it's unique id.