1 // Boost.Bimap 2 // 3 // Copyright (c) 2006-2007 Matias Capeletto 4 // 5 // Distributed under the Boost Software License, Version 1.0. 6 // (See accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 9 /// \file relation/pair_layout.hpp 10 /// \brief Tags for pair layouts 11 12 #ifndef BOOST_BIMAP_RELATION_PAIR_LAYOUT_HPP 13 #define BOOST_BIMAP_RELATION_PAIR_LAYOUT_HPP 14 15 #if defined(_MSC_VER) 16 #pragma once 17 #endif 18 19 #include <boost/config.hpp> 20 21 namespace boost { 22 namespace bimaps { 23 namespace relation { 24 25 //@{ 26 27 /// \brief Tag for normal layout. ( A,B -> A,B ) 28 29 struct normal_layout {}; 30 31 /// \brief Tag for mirror layout. ( A,B -> B,A ) 32 33 struct mirror_layout {}; 34 35 //@} 36 37 /** \struct boost::bimaps::relation::inverse_layout 38 \brief Metafunction to obtain the inverse of a layout. 39 40 \code 41 template< class Layout > 42 struct inverse_layout 43 { 44 typedef {InverseLayout} type; 45 }; 46 \endcode 47 48 See also normal_layout, mirror_layout. 49 **/ 50 51 #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES 52 53 template< class Layout > 54 struct inverse_layout 55 { 56 typedef normal_layout type; 57 }; 58 59 template<> 60 struct inverse_layout< normal_layout > 61 { 62 typedef mirror_layout type; 63 }; 64 65 #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES 66 67 } // namespace relation 68 } // namespace bimaps 69 } // namespace boost 70 71 #endif // BOOST_BIMAP_RELATION_DETAIL_PAIR_LAYOUT_HPP 72 73