]> git.decadent.org.uk Git - videolink.git/blobdiff - child_iterator.cpp
Renamed various types to fit lower_case_with_underscores convention.
[videolink.git] / child_iterator.cpp
diff --git a/child_iterator.cpp b/child_iterator.cpp
new file mode 100644 (file)
index 0000000..d6e708e
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2005 Ben Hutchings <ben@decadentplace.org.uk>.
+// See the file "COPYING" for licence details.
+
+#include "child_iterator.hpp"
+
+#include <cassert>
+
+#include "xpcom_support.hpp"
+
+using xpcom_support::check;
+
+child_iterator::child_iterator()
+       : node_(0)
+{}
+
+child_iterator::child_iterator(nsIDOMNode * node)
+{
+    check(node->GetFirstChild(&node_));
+}
+
+child_iterator::~child_iterator()
+{
+    if (node_)
+       node_->Release();
+}
+
+already_AddRefed<nsIDOMNode> child_iterator::operator*() const
+{
+    assert(node_);
+    node_->AddRef();
+    return node_;
+}
+
+child_iterator & child_iterator::operator++()
+{
+    nsIDOMNode * next;
+    check(node_->GetNextSibling(&next));
+    node_->Release();
+    node_ = next;
+    return *this;
+}
+
+bool child_iterator::operator==(const child_iterator & other) const
+{
+    return node_ == other.node_;
+}