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_