core/sm_simple_prioqueue.h
author Phong Dang <teame06@gmail.com>
Wed Aug 01 07:29:40 2007 +0000 (2007-08-01)
changeset 1241 2e8046793bc9
parent 1231 17badaf66ce4
child 1330 ab94316bb52b
permissions -rw-r--r--
Added check to make sure player are alive to perform sm_slap, sm_burn, sm_slay.
     1 /**
     2  * vim: set ts=4 :
     3  * ================================================================
     4  * SourceMod
     5  * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
     6  * ================================================================
     7  *
     8  * This program is free software; you can redistribute it and/or 
     9  * modify it under the terms of the GNU General Public License, 
    10  * version 3.0, as published by the Free Software Foundation.
    11  * 
    12  * This program is distributed in the hope that it will be useful,
    13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15  * GNU General Public License for more details.
    16  *
    17  * You should have received a copy of the GNU General Public License
    18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    19  *
    20  * As a special exception, AlliedModders LLC gives you permission to 
    21  * link the code of this program (as well as its derivative works) to 
    22  * "Half-Life 2," the "Source Engine," the "SourcePawn JIT," and any 
    23  * Game MODs that run on software by the Valve Corporation.  You must 
    24  * obey the GNU General Public License in all respects for all other 
    25  * code used. Additionally, AlliedModders LLC grants this exception 
    26  * to all derivative works. AlliedModders LLC defines further 
    27  * exceptions, found in LICENSE.txt (as of this writing, version 
    28  * JULY-31-2007), or <http://www.sourcemod.net/license.php>.
    29  *
    30  * Version: $Id$
    31  */
    32 
    33 #include "sm_queue.h"
    34 #include <IDBDriver.h>
    35 
    36 template <class T>
    37 class PrioQueue
    38 {
    39 private:
    40 	Queue<T> m_HighQueue;
    41 	Queue<T> m_NormalQueue;
    42 	Queue<T> m_LowQueue;
    43 public:
    44 	inline Queue<T> & GetQueue(PrioQueueLevel level)
    45 	{
    46 		if (level == PrioQueue_High)
    47 		{
    48 			return m_HighQueue;
    49 		} else if (level == PrioQueue_Normal) {
    50 			return m_NormalQueue;
    51 		} else {
    52 			return m_LowQueue;
    53 		}
    54 	}
    55 	inline Queue<T> & GetLikelyQueue()
    56 	{
    57 		if (!m_HighQueue.empty())
    58 		{
    59 			return m_HighQueue;
    60 		}
    61 		if (!m_NormalQueue.empty())
    62 		{
    63 			return m_NormalQueue;
    64 		}
    65 		return m_LowQueue;
    66 	}
    67 };