dvander@1098: /** dvander@1098: * vim: set ts=4 : dvander@1098: * =============================================================== dvander@1098: * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. dvander@1098: * =============================================================== dvander@1098: * dvander@1098: * This file is not open source and may not be copied without explicit dvander@1098: * written permission of AlliedModders LLC. This file may not be redistributed dvander@1098: * in whole or significant part. dvander@1098: * For information, see LICENSE.txt or http://www.sourcemod.net/license.php dvander@1098: * dvander@1098: * Version: $Id$ dvander@1098: */ dvander@1098: dvander@1098: #include "sm_queue.h" dvander@1098: dvander@1098: enum PrioQueueLevel dvander@1098: { dvander@1098: PrioQueue_High, dvander@1098: PrioQueue_Normal, dvander@1098: PrioQueue_Low dvander@1098: }; dvander@1098: dvander@1098: template dvander@1098: class PrioQueue dvander@1098: { dvander@1098: private: dvander@1098: Queue m_HighQueue; dvander@1098: Queue m_NormalQueue; dvander@1098: Queue m_LowQueue; dvander@1098: public: dvander@1098: inline Queue & GetQueue(PrioQueueLevel level) dvander@1098: { dvander@1098: if (level == PrioQueue_High) dvander@1098: { dvander@1098: return m_HighQueue; dvander@1098: } else if (level == PrioQueue_Normal) { dvander@1098: return m_NormalQueue; dvander@1098: } else { dvander@1098: return m_LowQueue; dvander@1098: } dvander@1098: } dvander@1098: inline Queue & GetLikelyQueue() dvander@1098: { dvander@1098: if (!m_HighQueue.empty()) dvander@1098: { dvander@1098: return m_HighQueue; dvander@1098: } dvander@1098: if (!m_NormalQueue.empty()) dvander@1098: { dvander@1098: return m_NormalQueue; dvander@1098: } dvander@1098: return m_LowQueue; dvander@1098: } dvander@1098: };