X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=boost_ext%2Fboost%2Fbimap%2Fdetail%2Fgenerate_index_binder.hpp;fp=boost_ext%2Fboost%2Fbimap%2Fdetail%2Fgenerate_index_binder.hpp;h=01c899d4d891e9b4fde97ac6038ca595429c6b9e;hb=4123b4fe58a7fd4659fa01476581690b47c83600;hp=0000000000000000000000000000000000000000;hpb=79564b90f6c9f7cd0bc5b11a6146bb7067b11a75;p=senf.git diff --git a/boost_ext/boost/bimap/detail/generate_index_binder.hpp b/boost_ext/boost/bimap/detail/generate_index_binder.hpp new file mode 100644 index 0000000..01c899d --- /dev/null +++ b/boost_ext/boost/bimap/detail/generate_index_binder.hpp @@ -0,0 +1,125 @@ +// 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 + +#include + + +/*===========================================================================*/ +#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