williamr@2: /* Copyright 2003-2005 Joaquín M López Muñoz. williamr@2: * Distributed under the Boost Software License, Version 1.0. williamr@2: * (See accompanying file LICENSE_1_0.txt or copy at williamr@2: * http://www.boost.org/LICENSE_1_0.txt) williamr@2: * williamr@2: * See http://www.boost.org/libs/multi_index for library home page. williamr@2: */ williamr@2: williamr@2: #ifndef BOOST_MULTI_INDEX_FWD_HPP williamr@2: #define BOOST_MULTI_INDEX_FWD_HPP williamr@2: williamr@2: #if defined(_MSC_VER)&&(_MSC_VER>=1200) williamr@2: #pragma once williamr@2: #endif williamr@2: williamr@2: #include /* keep it first to prevent nasty warns in MSVC */ williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: namespace boost{ williamr@2: williamr@2: namespace multi_index{ williamr@2: williamr@2: /* Default value for IndexSpecifierList specifies a container williamr@2: * equivalent to std::set. williamr@2: */ williamr@2: williamr@2: template< williamr@2: typename Value, williamr@2: typename IndexSpecifierList=indexed_by > >, williamr@2: typename Allocator=std::allocator > williamr@2: class multi_index_container; williamr@2: williamr@2: template williamr@2: struct nth_index; williamr@2: williamr@2: template williamr@2: struct index; williamr@2: williamr@2: template williamr@2: struct nth_index_iterator; williamr@2: williamr@2: template williamr@2: struct nth_index_const_iterator; williamr@2: williamr@2: template williamr@2: struct index_iterator; williamr@2: williamr@2: template williamr@2: struct index_const_iterator; williamr@2: williamr@2: /* get and project functions not fwd declared due to problems williamr@2: * with dependent typenames williamr@2: */ williamr@2: williamr@2: template< williamr@2: typename Value1,typename IndexSpecifierList1,typename Allocator1, williamr@2: typename Value2,typename IndexSpecifierList2,typename Allocator2 williamr@2: > williamr@2: bool operator==( williamr@2: const multi_index_container& x, williamr@2: const multi_index_container& y); williamr@2: williamr@2: template< williamr@2: typename Value1,typename IndexSpecifierList1,typename Allocator1, williamr@2: typename Value2,typename IndexSpecifierList2,typename Allocator2 williamr@2: > williamr@2: bool operator<( williamr@2: const multi_index_container& x, williamr@2: const multi_index_container& y); williamr@2: williamr@2: template< williamr@2: typename Value1,typename IndexSpecifierList1,typename Allocator1, williamr@2: typename Value2,typename IndexSpecifierList2,typename Allocator2 williamr@2: > williamr@2: bool operator!=( williamr@2: const multi_index_container& x, williamr@2: const multi_index_container& y); williamr@2: williamr@2: template< williamr@2: typename Value1,typename IndexSpecifierList1,typename Allocator1, williamr@2: typename Value2,typename IndexSpecifierList2,typename Allocator2 williamr@2: > williamr@2: bool operator>( williamr@2: const multi_index_container& x, williamr@2: const multi_index_container& y); williamr@2: williamr@2: template< williamr@2: typename Value1,typename IndexSpecifierList1,typename Allocator1, williamr@2: typename Value2,typename IndexSpecifierList2,typename Allocator2 williamr@2: > williamr@2: bool operator>=( williamr@2: const multi_index_container& x, williamr@2: const multi_index_container& y); williamr@2: williamr@2: template< williamr@2: typename Value1,typename IndexSpecifierList1,typename Allocator1, williamr@2: typename Value2,typename IndexSpecifierList2,typename Allocator2 williamr@2: > williamr@2: bool operator<=( williamr@2: const multi_index_container& x, williamr@2: const multi_index_container& y); williamr@2: williamr@2: template williamr@2: void swap( williamr@2: multi_index_container& x, williamr@2: multi_index_container& y); williamr@2: williamr@2: } /* namespace multi_index */ williamr@2: williamr@2: /* multi_index_container, being the main type of this library, is promoted to williamr@2: * namespace boost. williamr@2: */ williamr@2: williamr@2: using multi_index::multi_index_container; williamr@2: williamr@2: } /* namespace boost */ williamr@2: williamr@2: #endif