2 * InspIRCd -- Internet Relay Chat Daemon
4 * Copyright (C) 2013, 2017 Sadie Powell <sadie@witchery.services>
5 * Copyright (C) 2012 Robby <robby@chatbelgie.be>
6 * Copyright (C) 2011 jackmcbarn <jackmcbarn@inspircd.org>
7 * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
8 * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
9 * Copyright (C) 2005, 2010 Craig Edwards <brain@inspircd.org>
11 * This file is part of InspIRCd. InspIRCd is free software: you can
12 * redistribute it and/or modify it under the terms of the GNU General Public
13 * License as published by the Free Software Foundation, version 2.
15 * This program is distributed in the hope that it will be useful, but WITHOUT
16 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <http://www.gnu.org/licenses/>.
28 * The CullList class is used to delete objects at the end of the main loop to
29 * avoid problems with references to deleted pointers if an object were deleted
32 class CoreExport CullList
34 std::vector<classbase*> list;
35 std::vector<LocalUser*> SQlist;
38 /** Adds an item to the cull list
40 void AddItem(classbase* item) { list.push_back(item); }
41 void AddSQItem(LocalUser* item) { SQlist.push_back(item); }
43 /** Applies the cull list (deletes the contents)
48 /** Represents an action which is executable by an action list */
49 class CoreExport ActionBase : public classbase
52 /** Executes this action. */
53 virtual void Call() = 0;
56 class CoreExport ActionList
58 std::vector<ActionBase*> list;
61 /** Adds an item to the list
63 void AddAction(ActionBase* item) { list.push_back(item); }