core/sm_simple_prioqueue.h
author Scott Ehlert <ds@alliedmods.net>
Wed Aug 15 06:19:30 2007 +0000 (2007-08-15)
changeset 1330 ab94316bb52b
parent 1231 17badaf66ce4
child 1947 e73a1e51833b
permissions -rw-r--r--
Updated license headers on virtually all files with extremely minor changes in the name of some sort of strange consistency.
All plugin and include file headers also have been changed to say about GPL3 instead of GPL2.

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