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
>stdexcept
</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
>;
42 <span class=keyword
>template
</span><span class=special
>< </span><span class=keyword
>class
</span><span class=identifier
>C
</span><span class=special
>></span>
43 <span class=keyword
>class
</span><span class=identifier
>range_inserter
</span>
45 </span><span class=keyword
>typedef
</span><span class=keyword
>typename
</span><span class=identifier
>C
</span><span class=special
>::
</span><span class=identifier
>iterator
</span><span class=identifier
>iterator
</span><span class=special
>;
46 </span><span class=identifier
>iterator
</span><span class=identifier
>begin
</span><span class=special
>,
</span><span class=identifier
>end
</span><span class=special
>;
</span>
47 <span class=keyword
>public
</span><span class=special
>:
48 </span><span class=identifier
>range_inserter
</span><span class=special
>(
</span><span class=identifier
>C
</span><span class=special
>& </span><span class=identifier
>c
</span><span class=special
>)
49 </span><span class=special
>:
</span><span class=identifier
>begin
</span><span class=special
>(
</span><span class=identifier
>c
</span><span class=special
>.
</span><span class=identifier
>begin
</span><span class=special
>()
</span><span class=special
>),
</span><span class=identifier
>end
</span><span class=special
>(
</span><span class=identifier
>c
</span><span class=special
>.
</span><span class=identifier
>end
</span><span class=special
>()
</span><span class=special
>)
50 </span><span class=special
>{
</span><span class=special
>}
52 </span><span class=keyword
>template
</span><span class=special
>< </span><span class=keyword
>class
</span><span class=identifier
>T
</span><span class=special
>>
53 </span><span class=keyword
>void
</span><span class=keyword
>operator
</span><span class=special
>()(
</span><span class=identifier
>T
</span><span class=identifier
>r
</span><span class=special
>)
54 </span><span class=special
>{
55 </span><span class=keyword
>if
</span><span class=special
>(
</span><span class=identifier
>begin
</span><span class=special
>==
</span><span class=identifier
>end
</span><span class=special
>)
56 </span><span class=keyword
>throw
</span><span class=identifier
>std
</span><span class=special
>::
</span><span class=identifier
>range_error
</span><span class=special
>(
</span><span class=string
>"range error:
<range_inserter
>" </span><span class=special
>);
57 </span><span class=special
>*
</span><span class=identifier
>begin
</span><span class=special
>=
</span><span class=identifier
>r
</span><span class=special
>;
58 </span><span class=special
>++
</span><span class=identifier
>begin
</span><span class=special
>;
59 </span><span class=special
>}
</span>
60 <span class=special
>};
64 <span class=keyword
>template
</span><span class=special
>< </span><span class=keyword
>class
</span><span class=identifier
>C
</span><span class=special
>></span>
65 <span class=keyword
>inline
</span><span class=identifier
>range_inserter
</span><span class=special
><</span><span class=identifier
>C
</span><span class=special
>> </span><span class=identifier
>make_range_inserter
</span><span class=special
>(
</span><span class=identifier
>C
</span><span class=special
>& </span><span class=identifier
>c
</span><span class=special
>)
</span>
67 </span><span class=keyword
>return
</span><span class=identifier
>range_inserter
</span><span class=special
><</span><span class=identifier
>C
</span><span class=special
>>(
</span><span class=identifier
>c
</span><span class=special
>);
</span>
72 <span class=keyword
>template
</span><span class=special
>< </span><span class=keyword
>class
</span><span class=identifier
>T
</span><span class=special
>></span>
73 <span class=keyword
>class
</span><span class=identifier
>my_vector
</span>
75 </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
>T
</span><span class=special
>> </span><span class=identifier
>vector_t
</span><span class=special
>;
76 </span><span class=keyword
>typedef
</span><span class=keyword
>typename
</span><span class=identifier
>vector_t
</span><span class=special
>::
</span><span class=identifier
>size_type
</span><span class=identifier
>size_type
</span><span class=special
>;
77 </span><span class=identifier
>vector_t
</span><span class=identifier
>data_
</span><span class=special
>;
79 <span class=keyword
>public
</span><span class=special
>:
80 </span><span class=identifier
>my_vector
</span><span class=special
>()
</span><span class=special
>:
</span><span class=identifier
>data_
</span><span class=special
>(
</span><span class=number
>10</span><span class=special
>,
</span><span class=number
>0 </span><span class=special
>)
81 </span><span class=special
>{
</span><span class=special
>}
83 </span><span class=identifier
>ba
</span><span class=special
>::
</span><span class=identifier
>list_inserter
</span><span class=special
>< </span><span class=identifier
>range_inserter
</span><span class=special
>< </span><span class=identifier
>vector_t
</span><span class=special
>>,
</span><span class=identifier
>T
</span><span class=special
>>
84 </span><span class=keyword
>operator
</span><span class=special
>=(
</span><span class=identifier
>T
</span><span class=identifier
>r
</span><span class=special
>)
85 </span><span class=special
>{
86 </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
>make_range_inserter
</span><span class=special
>(
</span><span class=identifier
>data_
</span><span class=special
>)
</span><span class=special
>)(
</span><span class=identifier
>r
</span><span class=special
>);
87 </span><span class=special
>}
89 </span><span class=identifier
>size_type
</span><span class=identifier
>size
</span><span class=special
>()
</span><span class=keyword
>const
90 </span><span class=special
>{
91 </span><span class=keyword
>return
</span><span class=identifier
>data_
</span><span class=special
>.
</span><span class=identifier
>size
</span><span class=special
>();
92 </span><span class=special
>}
94 </span><span class=keyword
>const
</span><span class=identifier
>T
</span><span class=special
>& </span><span class=keyword
>operator
</span><span class=special
>[](
</span><span class=identifier
>size_type
</span><span class=identifier
>index
</span><span class=special
>)
95 </span><span class=special
>{
96 </span><span class=keyword
>return
</span><span class=identifier
>data_
</span><span class=special
>.
</span><span class=identifier
>at
</span><span class=special
>(
</span><span class=identifier
>index
</span><span class=special
>);
97 </span><span class=special
>}
</span>
98 <span class=special
>};
102 <span class=keyword
>void
</span><span class=identifier
>check_list_inserter
</span><span class=special
>()
</span>
103 <span class=special
>{
104 </span><span class=keyword
>using
</span><span class=keyword
>namespace
</span><span class=identifier
>std
</span><span class=special
>;
105 </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
>;
107 </span><span class=identifier
>my_vector
</span><span class=special
><</span><span class=keyword
>int
</span><span class=special
>> </span><span class=identifier
>vec
</span><span class=special
>;
108 </span><span class=identifier
>vec
</span><span class=special
>=
</span><span class=number
>1</span><span class=special
>,
</span><span class=number
>2</span><span class=special
>,
</span><span class=number
>3</span><span class=special
>,
</span><span class=number
>4</span><span class=special
>,
</span><span class=number
>5</span><span class=special
>,
</span><span class=number
>6</span><span class=special
>,
</span><span class=number
>7</span><span class=special
>,
</span><span class=number
>8</span><span class=special
>,
</span><span class=number
>9</span><span class=special
>,
</span><span class=number
>10</span><span class=special
>;
109 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>vec
</span><span class=special
>.
</span><span class=identifier
>size
</span><span class=special
>(),
</span><span class=number
>10u </span><span class=special
>);
110 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>vec
</span><span class=special
>[
</span><span class=number
>0</span><span class=special
>],
</span><span class=number
>1 </span><span class=special
>);
111 </span><span class=identifier
>BOOST_CHECK_EQUAL
</span><span class=special
>(
</span><span class=identifier
>vec
</span><span class=special
>[
</span><span class=number
>9</span><span class=special
>],
</span><span class=number
>10 </span><span class=special
>);
</span>
112 <span class=special
>}
116 <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
>>
118 <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
>;
120 <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>
121 <span class=special
>{
122 </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
>);
124 </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
>);
126 </span><span class=keyword
>return
</span><span class=identifier
>test
</span><span class=special
>;
</span>
127 <span class=special
>}