Chris@16
|
1 // Boost.Geometry Index
|
Chris@16
|
2 //
|
Chris@16
|
3 // Insert iterator
|
Chris@16
|
4 //
|
Chris@16
|
5 // Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
|
Chris@16
|
6 //
|
Chris@16
|
7 // Use, modification and distribution is subject to the Boost Software License,
|
Chris@16
|
8 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
9 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
10
|
Chris@16
|
11 #ifndef BOOST_GEOMETRY_INDEX_INSERTER_HPP
|
Chris@16
|
12 #define BOOST_GEOMETRY_INDEX_INSERTER_HPP
|
Chris@16
|
13
|
Chris@16
|
14 #include <iterator>
|
Chris@16
|
15
|
Chris@16
|
16 /*!
|
Chris@16
|
17 \defgroup inserters Inserters (boost::geometry::index::)
|
Chris@16
|
18 */
|
Chris@16
|
19
|
Chris@16
|
20 namespace boost { namespace geometry { namespace index {
|
Chris@16
|
21
|
Chris@16
|
22 template <class Container>
|
Chris@16
|
23 class insert_iterator :
|
Chris@16
|
24 public std::iterator<std::output_iterator_tag, void, void, void, void>
|
Chris@16
|
25 {
|
Chris@16
|
26 public:
|
Chris@16
|
27 typedef Container container_type;
|
Chris@16
|
28
|
Chris@16
|
29 inline explicit insert_iterator(Container & c)
|
Chris@16
|
30 : container(&c)
|
Chris@16
|
31 {}
|
Chris@16
|
32
|
Chris@16
|
33 insert_iterator & operator=(typename Container::value_type const& value)
|
Chris@16
|
34 {
|
Chris@16
|
35 container->insert(value);
|
Chris@16
|
36 return *this;
|
Chris@16
|
37 }
|
Chris@16
|
38
|
Chris@16
|
39 insert_iterator & operator* ()
|
Chris@16
|
40 {
|
Chris@16
|
41 return *this;
|
Chris@16
|
42 }
|
Chris@16
|
43
|
Chris@16
|
44 insert_iterator & operator++ ()
|
Chris@16
|
45 {
|
Chris@16
|
46 return *this;
|
Chris@16
|
47 }
|
Chris@16
|
48
|
Chris@16
|
49 insert_iterator operator++(int)
|
Chris@16
|
50 {
|
Chris@16
|
51 return *this;
|
Chris@16
|
52 }
|
Chris@16
|
53
|
Chris@16
|
54 private:
|
Chris@16
|
55 Container * container;
|
Chris@16
|
56 };
|
Chris@16
|
57
|
Chris@16
|
58 /*!
|
Chris@16
|
59 \brief Insert iterator generator.
|
Chris@16
|
60
|
Chris@16
|
61 Returns insert iterator capable to insert values to the container
|
Chris@16
|
62 (spatial index) which has member function insert(value_type const&) defined.
|
Chris@16
|
63
|
Chris@16
|
64 \ingroup inserters
|
Chris@16
|
65
|
Chris@16
|
66 \param c The reference to the container (spatial index) to which values will be inserted.
|
Chris@16
|
67
|
Chris@16
|
68 \return The insert iterator inserting values to the container.
|
Chris@16
|
69 */
|
Chris@16
|
70 template <typename Container>
|
Chris@16
|
71 insert_iterator<Container> inserter(Container & c)
|
Chris@16
|
72 {
|
Chris@16
|
73 return insert_iterator<Container>(c);
|
Chris@16
|
74 }
|
Chris@16
|
75
|
Chris@16
|
76 }}} // namespace boost::geometry::index
|
Chris@16
|
77
|
Chris@16
|
78 #endif // BOOST_GEOMETRY_INDEX_INSERTER_HPP
|