/* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef BOUNDED_HEAP_BOOST_INCLUDED #define BOUNDED_HEAP_BOOST_INCLUDED #include "my_global.h" #include "my_base.h" /** @file A test of how to implement Bounded_queue using boost heap. We use the 'pimpl' idiom, to illustrate how to avoid dependencies from our own header files to boost header files. */ template class Bounded_queue_impl; template > class Bounded_queue_boost { public: explicit Bounded_queue_boost(); ~Bounded_queue_boost(); int init(ha_rows max_elements, Key_generator *sort_param, Key_type *sort_keys); void push(Element_type element); size_t num_elements() const { return m_num_elements; } private: Key_compare m_cmp; Key_type *m_sort_keys; size_t m_compare_length; Key_generator *m_sort_param; size_t m_max_elements; size_t m_num_elements; Bounded_queue_impl *pimpl; }; #endif // BOUNDED_HEAP_BOOST_INCLUDED