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