e099676042cfcec49013f36567c4df716d1c8c71
[videolink.git] / child_iterator.hpp
1 // Copyright 2005 Ben Hutchings <ben@decadentplace.org.uk>.
2 // See the file "COPYING" for licence details.
3
4 #ifndef INC_CHILD_ITERATOR_HPP
5 #define INC_CHILD_ITERATOR_HPP
6
7 #include <iterator>
8
9 #include <nsCOMPtr.h>
10 #include <nsIDOMNode.h>
11
12 class child_iterator
13     : public std::iterator<std::input_iterator_tag, nsCOMPtr<nsIDOMNode>,
14                            void, void, void>
15 {
16 public:
17     child_iterator();
18     explicit child_iterator(nsIDOMNode * node);
19     ~child_iterator();
20
21     already_AddRefed<nsIDOMNode> operator*() const;
22     child_iterator & operator++();
23     bool operator==(const child_iterator &) const;
24     bool operator!=(const child_iterator & other) const
25         {
26             return !(*this == other);
27         }
28
29 private:
30     nsIDOMNode * node_;
31 };
32
33 #endif // !INC_CHILD_ITERATOR_HPP