]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/bimap/include/boost/bimap/relation/support/pair_by.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / bimap / include / boost / bimap / relation / support / pair_by.hpp
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/support/pair_by.hpp
10 /// \brief pair_by<member>(r) function
11
12 #ifndef BOOST_BIMAP_RELATION_SUPPORT_PAIR_BY_HPP
13 #define BOOST_BIMAP_RELATION_SUPPORT_PAIR_BY_HPP
14
15 #if defined(_MSC_VER)
16 #pragma once
17 #endif
18
19 #include <boost/config.hpp>
20
21 #include <boost/bimap/relation/support/pair_type_by.hpp>
22 #include <boost/bimap/relation/detail/access_builder.hpp>
23
24 #ifdef BOOST_BIMAP_ONLY_DOXYGEN_WILL_PROCESS_THE_FOLLOWING_LINES
25
26 namespace boost {
27 namespace bimaps {
28 namespace relation {
29 namespace support {
30
31 /** \brief Gets a pair view of the relation.
32
33 \ingroup relation_group
34 **/
35
36 template< class Tag, class Relation >
37 BOOST_DEDUCED_TYPENAME result_of::pair_by<Tag,Relation>::type
38 pair_by( Relation & rel );
39
40 } // namespace support
41 } // namespace relation
42 } // namespace bimaps
43 } // namespace boost
44
45 #endif // BOOST_BIMAP_ONLY_DOXYGEN_WILL_PROCESS_THE_FOLLOWING_LINES
46
47
48 #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES
49
50 namespace boost {
51 namespace bimaps {
52 namespace relation {
53 namespace support {
54
55
56 // Since it is very error-prone to directly write the hole bunch
57 // of relation accesor. They are buil from litle macro blocks that
58 // are both more readable, leading to self docummenting code and a
59 // lot more easier to understand and mantain.
60 // It is very important to note that the three building blocks have
61 // to laid in the same namespace in order to work. There is also
62 // important to keep them in order.
63 // The forward declaration are not necesary but they help a lot to
64 // the reader, as they undercover what is the signature of the
65 // result code.
66 // In the end, it is not quicker to do it in this way because you
67 // write a lot. But this code has no complexity at all and almost
68 // every word writed is for documentation.
69
70 // Result of
71 // -------------------------------------------------------------------------
72 /*
73 namespace result_of {
74
75 template< class Tag, class Relation >
76 struct pair_by<Tag,Relation>;
77 {
78 typedef -unspecified- type;
79 };
80
81 } // namespace result_of
82 */
83
84 BOOST_BIMAP_SYMMETRIC_ACCESS_RESULT_OF_BUILDER
85 (
86 pair_by,
87 pair_type_by
88 )
89
90
91
92 // Implementation
93 // -------------------------------------------------------------------------
94
95 BOOST_BIMAP_SYMMETRIC_ACCESS_IMPLEMENTATION_BUILDER
96 (
97 pair_by,
98 Relation,
99 rel,
100 return rel.get_left_pair(),
101 return rel.get_right_pair()
102 )
103
104 // Interface
105 // --------------------------------------------------------------------------
106
107 BOOST_BIMAP_SYMMETRIC_ACCESS_INTERFACE_BUILDER
108 (
109 pair_by
110 )
111
112 } // namespace support
113 } // namespace relation
114 } // namespace bimaps
115 } // namespace boost
116
117
118 #endif // BOOST_BIMAP_DOXIGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES
119
120 #endif // BOOST_BIMAP_RELATION_SUPPORT_PAIR_BY_HPP