// Boost.Geometry Index // // Insert iterator // // Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. // // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_GEOMETRY_INDEX_INSERTER_HPP #define BOOST_GEOMETRY_INDEX_INSERTER_HPP #include /*! \defgroup inserters Inserters (boost::geometry::index::) */ namespace boost { namespace geometry { namespace index { template class insert_iterator { public: typedef std::output_iterator_tag iterator_category; typedef void value_type; typedef void difference_type; typedef void pointer; typedef void reference; typedef Container container_type; inline explicit insert_iterator(Container & c) : container(&c) {} insert_iterator & operator=(typename Container::value_type const& value) { container->insert(value); return *this; } insert_iterator & operator* () { return *this; } insert_iterator & operator++ () { return *this; } insert_iterator operator++(int) { return *this; } private: Container * container; }; /*! \brief Insert iterator generator. Returns insert iterator capable to insert values to the container (spatial index) which has member function insert(value_type const&) defined. \ingroup inserters \param c The reference to the container (spatial index) to which values will be inserted. \return The insert iterator inserting values to the container. */ template insert_iterator inserter(Container & c) { return insert_iterator(c); } }}} // namespace boost::geometry::index #endif // BOOST_GEOMETRY_INDEX_INSERTER_HPP