core/sm_simple_prioqueue.h
author Scott Ehlert <ds@alliedmods.net>
Sun Jul 15 08:00:26 2007 +0000 (2007-07-15)
changeset 1116 40cc5e9f0f1b
parent 1098 6d5921e1f931
child 1157 61c7092246c6
permissions -rw-r--r--
Removed strange debugging code
dvander@1098
     1
/**
dvander@1098
     2
 * vim: set ts=4 :
dvander@1098
     3
 * ===============================================================
dvander@1098
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@1098
     5
 * ===============================================================
dvander@1098
     6
 *
dvander@1098
     7
 * This file is not open source and may not be copied without explicit
dvander@1098
     8
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@1098
     9
 * in whole or significant part.
dvander@1098
    10
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@1098
    11
 *
dvander@1098
    12
 * Version: $Id$
dvander@1098
    13
 */
dvander@1098
    14
dvander@1098
    15
#include "sm_queue.h"
dvander@1098
    16
dvander@1098
    17
enum PrioQueueLevel
dvander@1098
    18
{
dvander@1098
    19
	PrioQueue_High,
dvander@1098
    20
	PrioQueue_Normal,
dvander@1098
    21
	PrioQueue_Low
dvander@1098
    22
};
dvander@1098
    23
dvander@1098
    24
template <class T>
dvander@1098
    25
class PrioQueue
dvander@1098
    26
{
dvander@1098
    27
private:
dvander@1098
    28
	Queue<T> m_HighQueue;
dvander@1098
    29
	Queue<T> m_NormalQueue;
dvander@1098
    30
	Queue<T> m_LowQueue;
dvander@1098
    31
public:
dvander@1098
    32
	inline Queue<T> & GetQueue(PrioQueueLevel level)
dvander@1098
    33
	{
dvander@1098
    34
		if (level == PrioQueue_High)
dvander@1098
    35
		{
dvander@1098
    36
			return m_HighQueue;
dvander@1098
    37
		} else if (level == PrioQueue_Normal) {
dvander@1098
    38
			return m_NormalQueue;
dvander@1098
    39
		} else {
dvander@1098
    40
			return m_LowQueue;
dvander@1098
    41
		}
dvander@1098
    42
	}
dvander@1098
    43
	inline Queue<T> & GetLikelyQueue()
dvander@1098
    44
	{
dvander@1098
    45
		if (!m_HighQueue.empty())
dvander@1098
    46
		{
dvander@1098
    47
			return m_HighQueue;
dvander@1098
    48
		}
dvander@1098
    49
		if (!m_NormalQueue.empty())
dvander@1098
    50
		{
dvander@1098
    51
			return m_NormalQueue;
dvander@1098
    52
		}
dvander@1098
    53
		return m_LowQueue;
dvander@1098
    54
	}
dvander@1098
    55
};