diff -r c7b4237fff50 -r 03a67e41afbc core/ConCmdManager.h --- a/core/ConCmdManager.h Fri Mar 28 06:21:34 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -/** - * vim: set ts=4 : - * ============================================================================= - * SourceMod - * Copyright (C) 2004-2007 AlliedModders LLC. All rights reserved. - * ============================================================================= - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, version 3.0, as published by the - * Free Software Foundation. - * - * 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 . - * - * As a special exception, AlliedModders LLC gives you permission to link the - * code of this program (as well as its derivative works) to "Half-Life 2," the - * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software - * by the Valve Corporation. You must obey the GNU General Public License in - * all respects for all other code used. Additionally, AlliedModders LLC grants - * this exception to all derivative works. AlliedModders LLC defines further - * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), - * or . - * - * Version: $Id$ - */ - -#ifndef _INCLUDE_SOURCEMOD_CONCMDMANAGER_H_ -#define _INCLUDE_SOURCEMOD_CONCMDMANAGER_H_ - -#include "sm_globals.h" -#include "sourcemm_api.h" -#include "ForwardSys.h" -#include "sm_trie.h" -#include "sm_memtable.h" -#include -#include -#include -#include -#include "concmd_cleaner.h" - -using namespace SourceHook; - -enum CmdType -{ - Cmd_Server, - Cmd_Console, - Cmd_Admin, -}; - -struct AdminCmdInfo -{ - AdminCmdInfo() - { - cmdGrpId = -1; - flags = 0; - eflags = 0; - } - int cmdGrpId; /* index into cmdgroup string table */ - FlagBits flags; /* default flags */ - FlagBits eflags; /* effective flags */ -}; - -struct CmdHook -{ - CmdHook() - { - pf = NULL; - pAdmin = NULL; - } - IPluginFunction *pf; /* function hook */ - String helptext; /* help text */ - AdminCmdInfo *pAdmin; /* admin requirements, if any */ -}; - -struct ConCmdInfo -{ - ConCmdInfo() - { - sourceMod = false; - pCmd = NULL; - } - bool sourceMod; /**< Determines whether or not concmd was created by a SourceMod plugin */ - ConCommand *pCmd; /**< Pointer to the command itself */ - List srvhooks; /**< Hooks as a server command */ - List conhooks; /**< Hooks as a console command */ - AdminCmdInfo admin; /**< Admin info, if any */ - bool is_admin_set; /**< Whether or not admin info is set */ -}; - -class ConCmdManager : - public SMGlobalClass, - public IRootConsoleCommand, - public IPluginsListener, - public IConCommandTracker -{ -#if defined ORANGEBOX_BUILD - friend void CommandCallback(const CCommand &command); -#else - friend void CommandCallback(); -#endif -public: - ConCmdManager(); - ~ConCmdManager(); -public: //SMGlobalClass - void OnSourceModAllInitialized(); - void OnSourceModShutdown(); -public: //IPluginsListener - void OnPluginDestroyed(IPlugin *plugin); -public: //IRootConsoleCommand - void OnRootConsoleCommand(const char *cmdname, const CCommand &command); -public: //IConCommandTracker - void OnUnlinkConCommandBase(ConCommandBase *pBase, const char *name, bool is_read_safe); -public: - bool AddServerCommand(IPluginFunction *pFunction, const char *name, const char *description, int flags); - bool AddConsoleCommand(IPluginFunction *pFunction, const char *name, const char *description, int flags); - bool AddAdminCommand(IPluginFunction *pFunction, - const char *name, - const char *group, - int adminflags, - const char *description, - int flags); - ResultType DispatchClientCommand(int client, const char *cmd, int args, ResultType type); - void UpdateAdminCmdFlags(const char *cmd, OverrideType type, FlagBits bits, bool remove); - bool LookForSourceModCommand(const char *cmd); - bool LookForCommandAdminFlags(const char *cmd, FlagBits *pFlags); - bool CheckCommandAccess(int client, const char *cmd, FlagBits flags); -private: - void InternalDispatch(const CCommand &command); - ResultType RunAdminCommand(ConCmdInfo *pInfo, int client, int args); - ConCmdInfo *AddOrFindCommand(const char *name, const char *description, int flags); - void SetCommandClient(int client); - void AddToCmdList(ConCmdInfo *info); - void RemoveConCmd(ConCmdInfo *info, const char *cmd, bool is_read_safe, bool untrack); - void RemoveConCmds(List &cmdlist); - void RemoveConCmds(List &cmdlist, IPluginContext *pContext); - bool CheckAccess(int client, const char *cmd, AdminCmdInfo *pAdmin); -public: - inline int GetCommandClient() - { - return m_CmdClient; - } - inline const List & GetCommandList() - { - return m_CmdList; - } -private: - Trie *m_pCmds; /* command lookup */ - Trie *m_pCmdGrps; /* command group lookup */ - List m_CmdList; /* command list */ - int m_CmdClient; /* current client */ - BaseStringTable m_Strings; /* string table */ -}; - -extern ConCmdManager g_ConCmds; - -#endif // _INCLUDE_SOURCEMOD_CONCMDMANAGER_H_