You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
125 lines
7.0 KiB
125 lines
7.0 KiB
// Boost.Bimap |
|
// |
|
// Copyright (c) 2006-2007 Matias Capeletto |
|
// |
|
// Distributed under the Boost Software License, Version 1.0. |
|
// (See accompanying file LICENSE_1_0.txt or copy at |
|
// http://www.boost.org/LICENSE_1_0.txt) |
|
|
|
/// \file detail/generate_index_binder.hpp |
|
/// \brief Define macros to help building the set type of definitions |
|
|
|
|
|
#ifndef BOOST_BIMAP_DETAIL_GENERATE_INDEX_BINDER_HPP |
|
#define BOOST_BIMAP_DETAIL_GENERATE_INDEX_BINDER_HPP |
|
|
|
#if defined(_MSC_VER) && (_MSC_VER>=1200) |
|
#pragma once |
|
#endif |
|
|
|
#include <boost/config.hpp> |
|
|
|
#include <boost/multi_index/tag.hpp> |
|
|
|
|
|
/*===========================================================================*/ |
|
#define BOOST_BIMAP_GENERATE_INDEX_BINDER_0CP( \ |
|
\ |
|
MULTI_INDEX_TYPE \ |
|
\ |
|
) \ |
|
\ |
|
template< class KeyExtractor, class Tag > \ |
|
struct index_bind \ |
|
{ \ |
|
typedef MULTI_INDEX_TYPE \ |
|
< \ |
|
multi_index::tag< Tag >, \ |
|
KeyExtractor \ |
|
\ |
|
> type; \ |
|
}; |
|
/*===========================================================================*/ |
|
|
|
|
|
|
|
/*===========================================================================*/ |
|
#define BOOST_BIMAP_GENERATE_INDEX_BINDER_1CP( \ |
|
\ |
|
MULTI_INDEX_TYPE, \ |
|
CONFIG_PARAMETER \ |
|
\ |
|
) \ |
|
\ |
|
template< class KeyExtractor, class Tag > \ |
|
struct index_bind \ |
|
{ \ |
|
typedef MULTI_INDEX_TYPE \ |
|
< \ |
|
multi_index::tag< Tag >, \ |
|
KeyExtractor, \ |
|
CONFIG_PARAMETER \ |
|
\ |
|
> type; \ |
|
}; |
|
/*===========================================================================*/ |
|
|
|
|
|
|
|
|
|
/*===========================================================================*/ |
|
#define BOOST_BIMAP_GENERATE_INDEX_BINDER_2CP( \ |
|
\ |
|
MULTI_INDEX_TYPE, \ |
|
CONFIG_PARAMETER_1, \ |
|
CONFIG_PARAMETER_2 \ |
|
) \ |
|
\ |
|
template< class KeyExtractor, class Tag > \ |
|
struct index_bind \ |
|
{ \ |
|
typedef MULTI_INDEX_TYPE \ |
|
< \ |
|
multi_index::tag< Tag >, \ |
|
KeyExtractor, \ |
|
CONFIG_PARAMETER_1, \ |
|
CONFIG_PARAMETER_2 \ |
|
\ |
|
> type; \ |
|
\ |
|
}; |
|
/*===========================================================================*/ |
|
|
|
|
|
// This is a special registration to allow sequenced and random access indices |
|
// to play along smoothly with the other index types. |
|
|
|
/*===========================================================================*/ |
|
#define BOOST_BIMAP_GENERATE_INDEX_BINDER_0CP_NO_EXTRACTOR( \ |
|
\ |
|
MULTI_INDEX_TYPE \ |
|
\ |
|
) \ |
|
\ |
|
template< class KeyExtractor, class Tag > \ |
|
struct index_bind \ |
|
{ \ |
|
typedef MULTI_INDEX_TYPE< multi_index::tag< Tag > > type; \ |
|
}; |
|
/*===========================================================================*/ |
|
|
|
|
|
// This is yet another special registration to allow unconstrained sets |
|
// to play along smoothly with the other index types. |
|
|
|
/*===========================================================================*/ |
|
#define BOOST_BIMAP_GENERATE_INDEX_BINDER_FAKE \ |
|
\ |
|
template< class KeyExtractor, class Tag > \ |
|
struct index_bind \ |
|
{ \ |
|
typedef void type; \ |
|
}; \ |
|
/*===========================================================================*/ |
|
|
|
#endif // BOOST_BIMAP_DETAIL_GENERATE_INDEX_BINDER_HPP
|
|
|