1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 3.2//EN">
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=ISO-8859-1">
6 <title>Boost.Assignment Documentation
</title>
7 <link rel=
"stylesheet" href=
"style.css" type=
"text/css">
12 <span class=comment
>// Boost.Assign library
14 // Copyright Thorsten Ottosen
2003-
2004. Use, modification and
15 // distribution is subject to the Boost Software License, Version
16 //
1.0. (See accompanying file LICENSE_1_0.txt or copy at
17 // http://www.boost.org/LICENSE_1_0.txt)
19 // For more information, see http://www.boost.org/libs/assign/
23 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>boost
</span><span class=special
>/
</span><span class=identifier
>detail
</span><span class=special
>/
</span><span class=identifier
>workaround
</span><span class=special
>.
</span><span class=identifier
>hpp
</span><span class=special
>>
25 <span class=preprocessor
>#if
</span><span class=identifier
>BOOST_WORKAROUND
</span><span class=special
>(
</span><span class=identifier
>__BORLANDC__
</span><span class=special
>,
</span><span class=identifier
>BOOST_TESTED_AT
</span><span class=special
>(
</span><span class=number
>0</span><span class=identifier
>x564
</span><span class=special
>))
</span>
26 ###
<span class=identifier
>pragma
</span><span class=identifier
>warn
</span><span class=special
>-
</span><span class=number
>8091 </span><span class=comment
>// supress warning in Boost.Test
</span>
27 ###
<span class=identifier
>pragma
</span><span class=identifier
>warn
</span><span class=special
>-
</span><span class=number
>8057 </span><span class=comment
>// unused argument argc/argv in Boost.Test
</span>
28 <span class=preprocessor
>#endif
30 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>boost
</span><span class=special
>/
</span><span class=identifier
>assign
</span><span class=special
>/
</span><span class=identifier
>list_inserter
</span><span class=special
>.
</span><span class=identifier
>hpp
</span><span class=special
>></span>
31 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>boost
</span><span class=special
>/
</span><span class=identifier
>test
</span><span class=special
>/
</span><span class=identifier
>unit_test
</span><span class=special
>.
</span><span class=identifier
>hpp
</span><span class=special
>></span>
32 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>boost
</span><span class=special
>/
</span><span class=identifier
>test
</span><span class=special
>/
</span><span class=identifier
>test_tools
</span><span class=special
>.
</span><span class=identifier
>hpp
</span><span class=special
>></span>
33 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>boost
</span><span class=special
>/
</span><span class=identifier
>function
</span><span class=special
>.
</span><span class=identifier
>hpp
</span><span class=special
>></span>
34 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>boost
</span><span class=special
>/
</span><span class=identifier
>bind
</span><span class=special
>.
</span><span class=identifier
>hpp
</span><span class=special
>></span>
35 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>vector
</span><span class=special
>></span>
36 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>map
</span><span class=special
>>
38 <span class=keyword
>namespace
</span><span class=identifier
>ba
</span><span class=special
>=
</span><span class=identifier
>boost
</span><span class=special
>::
</span><span class=identifier
>assign
</span><span class=special
>;
40 <span class=keyword
>class
</span><span class=identifier
>email
</span>
41 <span class=special
>{
</span>
42 <span class=keyword
>public
</span><span class=special
>:
43 </span><span class=keyword
>enum
</span><span class=identifier
>address_option
44 </span><span class=special
>{
45 </span><span class=identifier
>check_addr_book
</span><span class=special
>,
46 </span><span class=identifier
>dont_check_addr_book
47 </span><span class=special
>};
49 </span><span class=keyword
>typedef
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>pair
</span><span class=special
><</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=special
>,
</span><span class=identifier
>address_option
</span><span class=special
>> </span><span class=identifier
>bcc_type
</span><span class=special
>;
50 </span><span class=keyword
>typedef
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>vector
</span><span class=special
>< </span><span class=identifier
>bcc_type
</span><span class=special
>> </span><span class=identifier
>bcc_map
</span><span class=special
>;
51 </span><span class=keyword
>typedef
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>map
</span><span class=special
><</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=special
>,
</span><span class=identifier
>address_option
</span><span class=special
>> </span><span class=identifier
>address_map
</span><span class=special
>;
54 <span class=keyword
>private
</span><span class=special
>:
56 </span><span class=keyword
>mutable
</span><span class=identifier
>address_map
</span><span class=identifier
>cc_list
</span><span class=special
>;
57 </span><span class=keyword
>mutable
</span><span class=identifier
>address_map
</span><span class=identifier
>to_list
</span><span class=special
>;
58 </span><span class=identifier
>bcc_map
</span><span class=identifier
>bcc_list
</span><span class=special
>;
60 </span><span class=keyword
>struct
</span><span class=identifier
>add_to_map
61 </span><span class=special
>{
62 </span><span class=identifier
>address_map
</span><span class=special
>& </span><span class=identifier
>m
</span><span class=special
>;
64 </span><span class=identifier
>add_to_map
</span><span class=special
>(
</span><span class=identifier
>address_map
</span><span class=special
>& </span><span class=identifier
>m
</span><span class=special
>)
</span><span class=special
>:
</span><span class=identifier
>m
</span><span class=special
>(
</span><span class=identifier
>m
</span><span class=special
>)
65 </span><span class=special
>{}
67 </span><span class=keyword
>void
</span><span class=keyword
>operator
</span><span class=special
>()(
</span><span class=keyword
>const
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=special
>& </span><span class=identifier
>name
</span><span class=special
>,
</span><span class=identifier
>address_option
</span><span class=identifier
>ao
</span><span class=special
>)
68 </span><span class=special
>{
69 </span><span class=identifier
>m
</span><span class=special
>[
</span><span class=identifier
>name
</span><span class=special
>]
</span><span class=special
>=
</span><span class=identifier
>ao
</span><span class=special
>;
70 </span><span class=special
>}
72 </span><span class=keyword
>void
</span><span class=keyword
>operator
</span><span class=special
>()(
</span><span class=keyword
>const
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=special
>& </span><span class=identifier
>name
</span><span class=special
>)
73 </span><span class=special
>{
74 </span><span class=identifier
>m
</span><span class=special
>[
</span><span class=identifier
>name
</span><span class=special
>]
</span><span class=special
>=
</span><span class=identifier
>check_addr_book
</span><span class=special
>;
75 </span><span class=special
>}
76 </span><span class=special
>};
78 </span><span class=keyword
>struct
</span><span class=identifier
>add_to_vector
79 </span><span class=special
>{
80 </span><span class=identifier
>bcc_map
</span><span class=special
>& </span><span class=identifier
>m
</span><span class=special
>;
82 </span><span class=identifier
>add_to_vector
</span><span class=special
>(
</span><span class=identifier
>bcc_map
</span><span class=special
>& </span><span class=identifier
>m
</span><span class=special
>)
</span><span class=special
>:
</span><span class=identifier
>m
</span><span class=special
>(
</span><span class=identifier
>m
</span><span class=special
>)
83 </span><span class=special
>{}
85 </span><span class=keyword
>void
</span><span class=keyword
>operator
</span><span class=special
>()(
</span><span class=keyword
>const
</span><span class=identifier
>bcc_type
</span><span class=special
>& </span><span class=identifier
>r
</span><span class=special
>)
86 </span><span class=special
>{
87 </span><span class=identifier
>m
</span><span class=special
>.
</span><span class=identifier
>push_back
</span><span class=special
>(
</span><span class=identifier
>r
</span><span class=special
>);
88 </span><span class=special
>}
89 </span><span class=special
>};
91 <span class=keyword
>public
</span><span class=special
>:
93 </span><span class=identifier
>ba
</span><span class=special
>::
</span><span class=identifier
>list_inserter
</span><span class=special
>< </span><span class=identifier
>add_to_map
</span><span class=special
>>
94 </span><span class=identifier
>add_cc
</span><span class=special
>(
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=identifier
>name
</span><span class=special
>,
</span><span class=identifier
>address_option
</span><span class=identifier
>ao
</span><span class=special
>)
95 </span><span class=special
>{
96 </span><span class=keyword
>return
</span><span class=identifier
>ba
</span><span class=special
>::
</span><span class=identifier
>make_list_inserter
</span><span class=special
>(
</span><span class=identifier
>add_to_map
</span><span class=special
>(
</span><span class=identifier
>cc_list
</span><span class=special
>)
</span><span class=special
>)(
</span><span class=identifier
>name
</span><span class=special
>,
</span><span class=identifier
>ao
</span><span class=special
>);
97 </span><span class=special
>}
99 </span><span class=identifier
>ba
</span><span class=special
>::
</span><span class=identifier
>list_inserter
</span><span class=special
>< </span><span class=identifier
>add_to_map
</span><span class=special
>>
100 </span><span class=identifier
>add_to
</span><span class=special
>(
</span><span class=keyword
>const
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=special
>& </span><span class=identifier
>name
</span><span class=special
>)
101 </span><span class=special
>{
102 </span><span class=keyword
>return
</span><span class=identifier
>ba
</span><span class=special
>::
</span><span class=identifier
>make_list_inserter
</span><span class=special
>(
</span><span class=identifier
>add_to_map
</span><span class=special
>(
</span><span class=identifier
>to_list
</span><span class=special
>)
</span><span class=special
>)(
</span><span class=identifier
>name
</span><span class=special
>);
103 </span><span class=special
>}
105 </span><span class=identifier
>ba
</span><span class=special
>::
</span><span class=identifier
>list_inserter
</span><span class=special
>< </span><span class=identifier
>add_to_vector
</span><span class=special
>,
</span><span class=identifier
>bcc_type
</span><span class=special
>>
106 </span><span class=identifier
>add_bcc
</span><span class=special
>(
</span><span class=keyword
>const
</span><span class=identifier
>bcc_type
</span><span class=special
>& </span><span class=identifier
>bcc
</span><span class=special
>)
107 </span><span class=special
>{
108 </span><span class=keyword
>return
</span><span class=identifier
>ba
</span><span class=special
>::
</span><span class=identifier
>make_list_inserter
</span><span class=special
>(
</span><span class=identifier
>add_to_vector
</span><span class=special
>(
</span><span class=identifier
>bcc_list
</span><span class=special
>)
</span><span class=special
>)(
</span><span class=identifier
>bcc
</span><span class=special
>);
109 </span><span class=special
>}
111 </span><span class=identifier
>address_option
112 </span><span class=identifier
>cc_at
</span><span class=special
>(
</span><span class=keyword
>const
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=special
>& </span><span class=identifier
>name
</span><span class=special
>)
</span><span class=keyword
>const
113 </span><span class=special
>{
114 </span><span class=keyword
>return
</span><span class=identifier
>cc_list
</span><span class=special
>[
</span><span class=identifier
>name
</span><span class=special
>];
115 </span><span class=special
>}
117 </span><span class=identifier
>address_option
118 </span><span class=identifier
>to_at
</span><span class=special
>(
</span><span class=keyword
>const
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>string
</span><span class=special
>& </span><span class=identifier
>name
</span><span class=special
>)
</span><span class=keyword
>const
119 </span><span class=special
>{
120 </span><span class=keyword
>return
</span><span class=identifier
>to_list
</span><span class=special
>[
</span><span class=identifier
>name
</span><span class=special
>];
121 </span><span class=special
>}
123 </span><span class=identifier
>address_option
124 </span><span class=identifier
>bcc_at
</span><span class=special
>(
</span><span class=keyword
>unsigned
</span><span class=identifier
>index
</span><span class=special
>)
</span><span class=keyword
>const
125 </span><span class=special
>{
126 </span><span class=keyword
>return
</span><span class=identifier
>bcc_list
</span><span class=special
>.
</span><span class=identifier
>at
</span><span class=special
>(
</span><span class=identifier
>index
</span><span class=special
>).
</span><span class=identifier
>second
</span><span class=special
>;
127 </span><span class=special
>}
</span>
128 <span class=special
>};
132 <span class=keyword
>void
</span><span class=identifier
>check_list_inserter
</span><span class=special
>()
</span>
133 <span class=special
>{
134 </span><span class=keyword
>using
</span><span class=keyword
>namespace
</span><span class=identifier
>boost
</span><span class=special
>::
</span><span class=identifier
>assign
</span><span class=special
>;
136 </span><span class=identifier
>email
</span><span class=identifier
>e
</span><span class=special
>;
137 </span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>add_cc
</span><span class=special
>(
</span><span class=string
>"franz
"</span><span class=special
>,
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>dont_check_addr_book
</span><span class=special
>)
138 </span><span class=special
>(
</span><span class=string
>"hanz
"</span><span class=special
>,
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>check_addr_book
</span><span class=special
>)
139 </span><span class=special
>(
</span><span class=string
>"betty
"</span><span class=special
>,
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>dont_check_addr_book
</span><span class=special
>);
140 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>cc_at
</span><span class=special
>(
</span><span class=string
>"franz
" </span><span class=special
>),
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>dont_check_addr_book
</span><span class=special
>);
141 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>cc_at
</span><span class=special
>(
</span><span class=string
>"hanz
" </span><span class=special
>),
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>check_addr_book
</span><span class=special
>);
142 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>cc_at
</span><span class=special
>(
</span><span class=string
>"betty
" </span><span class=special
>),
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>dont_check_addr_book
</span><span class=special
>);
144 </span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>add_to
</span><span class=special
>(
</span><span class=string
>"betsy
" </span><span class=special
>)(
</span><span class=string
>"peter
" </span><span class=special
>);
145 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>cc_at
</span><span class=special
>(
</span><span class=string
>"betsy
" </span><span class=special
>),
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>check_addr_book
</span><span class=special
>);
146 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>cc_at
</span><span class=special
>(
</span><span class=string
>"peter
" </span><span class=special
>),
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>check_addr_book
</span><span class=special
>);
148 </span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>add_bcc
</span><span class=special
>(
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>bcc_type
</span><span class=special
>(
</span><span class=string
>"Mr. Foo
"</span><span class=special
>,
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>check_addr_book
</span><span class=special
>)
</span><span class=special
>)
149 </span><span class=special
>(
</span><span class=string
>"Mr. Bar
"</span><span class=special
>,
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>dont_check_addr_book
</span><span class=special
>);
150 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>bcc_at
</span><span class=special
>(
</span><span class=number
>0 </span><span class=special
>),
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>check_addr_book
</span><span class=special
>);
151 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>e
</span><span class=special
>.
</span><span class=identifier
>bcc_at
</span><span class=special
>(
</span><span class=number
>1 </span><span class=special
>),
</span><span class=identifier
>email
</span><span class=special
>::
</span><span class=identifier
>dont_check_addr_book
</span><span class=special
>);
153 <span class=special
>}
157 <span class=preprocessor
>#include
</span><span class=special
><</span><span class=identifier
>boost
</span><span class=special
>/
</span><span class=identifier
>test
</span><span class=special
>/
</span><span class=identifier
>included
</span><span class=special
>/
</span><span class=identifier
>unit_test_framework
</span><span class=special
>.
</span><span class=identifier
>hpp
</span><span class=special
>>
159 <span class=keyword
>using
</span><span class=identifier
>boost
</span><span class=special
>::
</span><span class=identifier
>unit_test_framework
</span><span class=special
>::
</span><span class=identifier
>test_suite
</span><span class=special
>;
161 <span class=identifier
>test_suite
</span><span class=special
>*
</span><span class=identifier
>init_unit_test_suite
</span><span class=special
>(
</span><span class=keyword
>int
</span><span class=identifier
>argc
</span><span class=special
>,
</span><span class=keyword
>char
</span><span class=special
>*
</span><span class=identifier
>argv
</span><span class=special
>[]
</span><span class=special
>)
</span>
162 <span class=special
>{
163 </span><span class=identifier
>test_suite
</span><span class=special
>*
</span><span class=identifier
>test
</span><span class=special
>=
</span><span class=identifier
>BOOST_TEST_SUITE
</span><span class=special
>(
</span><span class=string
>"List Test Suite
" </span><span class=special
>);
165 </span><span class=identifier
>test
</span><span class=special
>-
></span><span class=identifier
>add
</span><span class=special
>(
</span><span class=identifier
>BOOST_TEST_CASE
</span><span class=special
>(
</span><span class=special
>&</span><span class=identifier
>check_list_inserter
</span><span class=special
>)
</span><span class=special
>);
167 </span><span class=keyword
>return
</span><span class=identifier
>test
</span><span class=special
>;
</span>
168 <span class=special
>}