core/sm_simple_prioqueue.h
author David Anderson <dvander@alliedmods.net>
Tue Jul 24 02:24:37 2007 +0000 (2007-07-24)
changeset 1157 61c7092246c6
parent 1098 6d5921e1f931
child 1231 17badaf66ce4
permissions -rw-r--r--
added amb670 (exposed IDBThreadOperation to extensions)
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@1157
    16
#include <IDBDriver.h>
dvander@1098
    17
dvander@1098
    18
template <class T>
dvander@1098
    19
class PrioQueue
dvander@1098
    20
{
dvander@1098
    21
private:
dvander@1098
    22
	Queue<T> m_HighQueue;
dvander@1098
    23
	Queue<T> m_NormalQueue;
dvander@1098
    24
	Queue<T> m_LowQueue;
dvander@1098
    25
public:
dvander@1098
    26
	inline Queue<T> & GetQueue(PrioQueueLevel level)
dvander@1098
    27
	{
dvander@1098
    28
		if (level == PrioQueue_High)
dvander@1098
    29
		{
dvander@1098
    30
			return m_HighQueue;
dvander@1098
    31
		} else if (level == PrioQueue_Normal) {
dvander@1098
    32
			return m_NormalQueue;
dvander@1098
    33
		} else {
dvander@1098
    34
			return m_LowQueue;
dvander@1098
    35
		}
dvander@1098
    36
	}
dvander@1098
    37
	inline Queue<T> & GetLikelyQueue()
dvander@1098
    38
	{
dvander@1098
    39
		if (!m_HighQueue.empty())
dvander@1098
    40
		{
dvander@1098
    41
			return m_HighQueue;
dvander@1098
    42
		}
dvander@1098
    43
		if (!m_NormalQueue.empty())
dvander@1098
    44
		{
dvander@1098
    45
			return m_NormalQueue;
dvander@1098
    46
		}
dvander@1098
    47
		return m_LowQueue;
dvander@1098
    48
	}
dvander@1098
    49
};