dvander@1582: /** dvander@1582: * vim: set ts=4 : dvander@1582: * ============================================================================= dvander@1582: * SourceMod ds@1947: * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved. dvander@1582: * ============================================================================= dvander@1582: * dvander@1582: * This program is free software; you can redistribute it and/or modify it under dvander@1582: * the terms of the GNU General Public License, version 3.0, as published by the dvander@1582: * Free Software Foundation. dvander@1582: * dvander@1582: * This program is distributed in the hope that it will be useful, but WITHOUT dvander@1582: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS dvander@1582: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more dvander@1582: * details. dvander@1582: * dvander@1582: * You should have received a copy of the GNU General Public License along with dvander@1582: * this program. If not, see . dvander@1582: * dvander@1582: * As a special exception, AlliedModders LLC gives you permission to link the dvander@1582: * code of this program (as well as its derivative works) to "Half-Life 2," the dvander@1582: * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software dvander@1582: * by the Valve Corporation. You must obey the GNU General Public License in dvander@1582: * all respects for all other code used. Additionally, AlliedModders LLC grants dvander@1582: * this exception to all derivative works. AlliedModders LLC defines further dvander@1582: * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), dvander@1582: * or . dvander@1582: * dvander@1582: * Version: $Id$ dvander@1582: */ dvander@1582: dvander@1584: #ifndef _INCLUDE_CONCMD_TRACKER_H_ dvander@1584: #define _INCLUDE_CONCMD_TRACKER_H_ dvander@1584: dvander@1582: class IConCommandTracker dvander@1582: { dvander@1582: public: dvander@1582: virtual void OnUnlinkConCommandBase(ConCommandBase *pBase, const char *name, bool is_read_safe) = 0; dvander@1582: }; dvander@1582: dvander@1582: void TrackConCommandBase(ConCommandBase *pBase, IConCommandTracker *me); dvander@1582: void UntrackConCommandBase(ConCommandBase *pBase, IConCommandTracker *me); dvander@1582: void Global_OnUnlinkConCommandBase(ConCommandBase *pBase); dvander@1582: dvander@2806: class IConCommandLinkListener dvander@2806: { dvander@2806: friend class ConCommandCleaner; dvander@2806: dvander@2806: static IConCommandLinkListener *head; dvander@2806: IConCommandLinkListener *next; dvander@2806: public: dvander@2806: IConCommandLinkListener() dvander@2806: { dvander@2806: next = head; dvander@2806: head = this; dvander@2806: } dvander@2806: dvander@2806: virtual void OnLinkConCommand(ConCommandBase *pBase) dvander@2806: { dvander@2806: } dvander@2806: dvander@2806: virtual void OnUnlinkConCommand(ConCommandBase *pBase) dvander@2806: { dvander@2806: } dvander@2806: }; dvander@2806: dvander@1584: #endif //_INCLUDE_CONCMD_TRACKER_H_