paludis Version 3.0.2
The one true package mangler
create_iterator.hh
1/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3/*
4 * Copyright (c) 2007, 2009 Ciaran McCreesh
5 *
6 * This file is part of the Paludis package manager. Paludis is free software;
7 * you can redistribute it and/or modify it under the terms of the GNU General
8 * Public License version 2, as published by the Free Software Foundation.
9 *
10 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License along with
16 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17 * Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20#ifndef PALUDIS_GUARD_PALUDIS_UTIL_CREATE_ITERATOR_HH
21#define PALUDIS_GUARD_PALUDIS_UTIL_CREATE_ITERATOR_HH 1
22
23#include <iterator>
24#include <paludis/util/create_iterator-fwd.hh>
25
26namespace paludis
27{
28 /**
29 * A CreateInsertIterator creates a value of type Value_ from the assigned value
30 * and inserts it into Iter_.
31 *
32 * \ingroup g_iterator
33 */
34 template <typename Value_, typename Iter_>
35 class CreateInsertIterator
36 {
37 private:
38 Iter_ _iter;
39
40 public:
41 ///\name Basic operations
42 ///\{
43
44 CreateInsertIterator();
45 ~CreateInsertIterator();
46 CreateInsertIterator(const CreateInsertIterator &);
47 CreateInsertIterator(const Iter_ &);
48
49 CreateInsertIterator & operator= (const CreateInsertIterator &);
50
51 template <typename T_>
52 CreateInsertIterator & operator= (const T_ &);
53
54 ///\}
55
56 ///\name Standard library typedefs
57 ///\{
58
59 typedef CreateInsertIterator value_type;
60 typedef CreateInsertIterator & reference;
61 typedef CreateInsertIterator * pointer;
62 typedef std::ptrdiff_t difference_type;
63 typedef std::output_iterator_tag iterator_category;
64
65 ///\}
66
67 ///\name Increment
68 ///\{
69
70 CreateInsertIterator & operator++ ();
71 CreateInsertIterator operator++ (int);
72
73 ///\}
74
75 ///\name Dereference
76 ///\{
77
78 pointer operator-> ();
79 reference operator* ();
80
81 ///\}
82 };
83}
84
85#endif
Definition about_metadata-fwd.hh:24