You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
880 B
45 lines
880 B
#ifndef DOCENTRYTRAVERSER_H
|
|
#define DOCENTRYTRAVERSER_H
|
|
|
|
namespace KHC {
|
|
|
|
class DocEntry;
|
|
class DocMetaInfo;
|
|
|
|
class DocEntryTraverser
|
|
{
|
|
public:
|
|
DocEntryTraverser() : mNotifyee( 0 ), mParent( 0 ), mParentEntry( 0 ) {}
|
|
virtual ~DocEntryTraverser() {}
|
|
|
|
void setNotifyee( DocMetaInfo * );
|
|
|
|
virtual void process( DocEntry * ) = 0;
|
|
|
|
virtual void startProcess( DocEntry * );
|
|
|
|
virtual DocEntryTraverser *createChild( DocEntry *parentEntry ) = 0;
|
|
|
|
virtual void deleteTraverser();
|
|
|
|
virtual void finishTraversal() {}
|
|
|
|
DocEntryTraverser *childTraverser( DocEntry *parentEntry );
|
|
virtual DocEntryTraverser *parentTraverser();
|
|
|
|
void setParentEntry( DocEntry * );
|
|
DocEntry *parentEntry();
|
|
|
|
protected:
|
|
DocMetaInfo *mNotifyee;
|
|
DocEntryTraverser *mParent;
|
|
|
|
private:
|
|
DocEntry *mParentEntry;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|
|
// vim:ts=2:sw=2:et
|