1*404b540aSrobert // -*- C++ -*- 2*404b540aSrobert 3*404b540aSrobert // Copyright (C) 2005, 2006 Free Software Foundation, Inc. 4*404b540aSrobert // 5*404b540aSrobert // This file is part of the GNU ISO C++ Library. This library is free 6*404b540aSrobert // software; you can redistribute it and/or modify it under the terms 7*404b540aSrobert // of the GNU General Public License as published by the Free Software 8*404b540aSrobert // Foundation; either version 2, or (at your option) any later 9*404b540aSrobert // version. 10*404b540aSrobert 11*404b540aSrobert // This library is distributed in the hope that it will be useful, but 12*404b540aSrobert // WITHOUT ANY WARRANTY; without even the implied warranty of 13*404b540aSrobert // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*404b540aSrobert // General Public License for more details. 15*404b540aSrobert 16*404b540aSrobert // You should have received a copy of the GNU General Public License 17*404b540aSrobert // along with this library; see the file COPYING. If not, write to 18*404b540aSrobert // the Free Software Foundation, 59 Temple Place - Suite 330, Boston, 19*404b540aSrobert // MA 02111-1307, USA. 20*404b540aSrobert 21*404b540aSrobert // As a special exception, you may use this file as part of a free 22*404b540aSrobert // software library without restriction. Specifically, if other files 23*404b540aSrobert // instantiate templates or use macros or inline functions from this 24*404b540aSrobert // file, or you compile this file and link it with other files to 25*404b540aSrobert // produce an executable, this file does not by itself cause the 26*404b540aSrobert // resulting executable to be covered by the GNU General Public 27*404b540aSrobert // License. This exception does not however invalidate any other 28*404b540aSrobert // reasons why the executable file might be covered by the GNU General 29*404b540aSrobert // Public License. 30*404b540aSrobert 31*404b540aSrobert // Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. 32*404b540aSrobert 33*404b540aSrobert // Permission to use, copy, modify, sell, and distribute this software 34*404b540aSrobert // is hereby granted without fee, provided that the above copyright 35*404b540aSrobert // notice appears in all copies, and that both that copyright notice 36*404b540aSrobert // and this permission notice appear in supporting documentation. None 37*404b540aSrobert // of the above authors, nor IBM Haifa Research Laboratories, make any 38*404b540aSrobert // representation about the suitability of this software for any 39*404b540aSrobert // purpose. It is provided "as is" without express or implied 40*404b540aSrobert // warranty. 41*404b540aSrobert 42*404b540aSrobert /** 43*404b540aSrobert * @file priority_queue_base_dispatch.hpp 44*404b540aSrobert * Contains an pqiative container dispatching base. 45*404b540aSrobert */ 46*404b540aSrobert 47*404b540aSrobert #ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP 48*404b540aSrobert #define PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP 49*404b540aSrobert 50*404b540aSrobert #include <ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp> 51*404b540aSrobert #include <ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp> 52*404b540aSrobert #include <ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp> 53*404b540aSrobert #include <ext/pb_ds/detail/binary_heap_/binary_heap_.hpp> 54*404b540aSrobert #include <ext/pb_ds/detail/thin_heap_/thin_heap_.hpp> 55*404b540aSrobert 56*404b540aSrobert namespace pb_ds 57*404b540aSrobert { 58*404b540aSrobert namespace detail 59*404b540aSrobert { 60*404b540aSrobert 61*404b540aSrobert template<typename Value_Type, typename Cmp_Fn, typename Tag, typename Allocator> 62*404b540aSrobert struct priority_queue_base_dispatch; 63*404b540aSrobert 64*404b540aSrobert template<typename Value_Type, typename Cmp_Fn, typename Allocator> 65*404b540aSrobert struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, pairing_heap_tag, Allocator> 66*404b540aSrobert { 67*404b540aSrobert typedef pairing_heap_< Value_Type, Cmp_Fn, Allocator> type; 68*404b540aSrobert }; 69*404b540aSrobert 70*404b540aSrobert template<typename Value_Type, typename Cmp_Fn, typename Allocator> 71*404b540aSrobert struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binomial_heap_tag, Allocator> 72*404b540aSrobert { 73*404b540aSrobert typedef binomial_heap_< Value_Type, Cmp_Fn, Allocator> type; 74*404b540aSrobert }; 75*404b540aSrobert 76*404b540aSrobert template<typename Value_Type, typename Cmp_Fn, typename Allocator> 77*404b540aSrobert struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, rc_binomial_heap_tag, Allocator> 78*404b540aSrobert { 79*404b540aSrobert typedef rc_binomial_heap_< Value_Type, Cmp_Fn, Allocator> type; 80*404b540aSrobert }; 81*404b540aSrobert 82*404b540aSrobert template<typename Value_Type, typename Cmp_Fn, typename Allocator> 83*404b540aSrobert struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binary_heap_tag, Allocator> 84*404b540aSrobert { 85*404b540aSrobert typedef binary_heap_< Value_Type, Cmp_Fn, Allocator> type; 86*404b540aSrobert }; 87*404b540aSrobert 88*404b540aSrobert template<typename Value_Type, typename Cmp_Fn, typename Allocator> 89*404b540aSrobert struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, thin_heap_tag, Allocator> 90*404b540aSrobert { 91*404b540aSrobert typedef thin_heap_< Value_Type, Cmp_Fn, Allocator> type; 92*404b540aSrobert }; 93*404b540aSrobert 94*404b540aSrobert } // namespace detail 95*404b540aSrobert } // namespace pb_ds 96*404b540aSrobert 97*404b540aSrobert #endif // #ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP 98