blob: b78eb51b6a04282bb1ecf98f54163167babf2bf3 [file] [log] [blame]
/*
Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
2004, 2005 Rob Buis <buis@kde.org>
Based on khtml code by:
Copyright (C) 1999 Lars Knoll (knoll@kde.org)
(C) 2000 Frederik Holljen (frederik.holljen@hig.no)
(C) 2001 Peter Kelly (pmk@post.com)
This file is part of the KDE project
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef KDOM_NodeIteratorImpl_H
#define KDOM_NodeIteratorImpl_H
#include <kdom/traversal/TraversalImpl.h>
namespace KDOM
{
class DocumentImpl;
class NodeIteratorImpl : public TraversalImpl
{
public:
NodeIteratorImpl(NodeImpl *n, short show,
NodeFilterImpl *filter, bool expansion);
virtual ~NodeIteratorImpl();
NodeImpl *nextNode();
NodeImpl *previousNode();
void detach();
NodeImpl *referenceNode() const { return m_referenceNode; }
bool pointerBeforeReferenceNode() const { return m_beforeReferenceNode; }
/**
* This function has to be called if you delete a node from the
* document tree and you want the Iterator to react if there
* are any changes concerning it.
*/
void notifyBeforeNodeRemoval(NodeImpl *removed);
private:
NodeIteratorImpl(const NodeIteratorImpl &);
NodeIteratorImpl &operator=(const NodeIteratorImpl &);
void setReferenceNode(NodeImpl *);
void setPointerBeforeReferenceNode(bool flag = true)
{
m_beforeReferenceNode = flag;
}
bool detached() const { return m_detached; }
void setDetached(bool flag = true) { m_detached = flag; }
DocumentImpl *document() const { return m_doc; }
void setDocument(DocumentImpl *);
private:
NodeImpl *m_referenceNode;
bool m_beforeReferenceNode;
bool m_detached;
DocumentImpl *m_doc;
};
};
#endif
// vim:ts=4:noet