-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
*
- * Inspire is copyright (C) 2002-2005 ChatSpike-Dev.
- * E-mail:
- * <brain@chatspike.net>
- * <Craig@chatspike.net>
+ * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
+ * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
+ * Copyright (C) 2005, 2007 Craig Edwards <craigedwards@brainbox.cc>
*
- * Written by Craig Edwards, Craig McLure, and others.
- * This program is free but copyrighted software; see
- * the file COPYING for details.
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
*
- * ---------------------------------------------------
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __CULLLIST_H__
-#define __CULLLIST_H__
-
-// include the common header files
-#include <typeinfo>
-#include <iostream>
-#include <string>
-#include <deque>
-#include <sstream>
-#include <vector>
-#include "users.h"
-#include "channels.h"
+#ifndef CULL_LIST_H
+#define CULL_LIST_H
-class CullItem
+/**
+ * The CullList class is used to delete objects at the end of the main loop to
+ * avoid problems with references to deleted pointers if an object were deleted
+ * during execution.
+ */
+class CoreExport CullList
{
- private:
- userrec* user;
- std::string reason;
+ std::vector<classbase*> list;
+ std::vector<LocalUser*> SQlist;
+
public:
- CullItem(userrec* u, std::string r);
- userrec* GetUser();
- std::string GetReason();
-};
+ /** Adds an item to the cull list
+ */
+ void AddItem(classbase* item) { list.push_back(item); }
+ void AddSQItem(LocalUser* item) { SQlist.push_back(item); }
+ /** Applies the cull list (deletes the contents)
+ */
+ void Apply();
+};
-class CullList
+class CoreExport ActionList
{
- private:
- std::vector<CullItem> list;
- char exempt[65535];
+ std::vector<HandlerBase0<void>*> list;
+
public:
- CullList();
- void AddItem(userrec* user, std::string reason);
- int Apply();
+ /** Adds an item to the list
+ */
+ void AddAction(HandlerBase0<void>* item) { list.push_back(item); }
+
+ /** Runs the items
+ */
+ void Run();
+
};
#endif
+