00001 #ifndef DOCENTRYTRAVERSER_H
00002 #define DOCENTRYTRAVERSER_H
00003
00004 namespace KHC {
00005
00006 class DocEntry;
00007 class DocMetaInfo;
00008
00009 class DocEntryTraverser
00010 {
00011 public:
00012 DocEntryTraverser() : mNotifyee( 0 ), mParent( 0 ), mParentEntry( 0 ) {}
00013 virtual ~DocEntryTraverser() {}
00014
00015 void setNotifyee( DocMetaInfo * );
00016
00017 virtual void process( DocEntry * ) = 0;
00018
00019 virtual void startProcess( DocEntry * );
00020
00021 virtual DocEntryTraverser *createChild( DocEntry *parentEntry ) = 0;
00022
00023 virtual void deleteTraverser();
00024
00025 virtual void finishTraversal() {}
00026
00027 DocEntryTraverser *childTraverser( DocEntry *parentEntry );
00028 virtual DocEntryTraverser *parentTraverser();
00029
00030 void setParentEntry( DocEntry * );
00031 DocEntry *parentEntry();
00032
00033 protected:
00034 DocMetaInfo *mNotifyee;
00035 DocEntryTraverser *mParent;
00036
00037 private:
00038 DocEntry *mParentEntry;
00039 };
00040
00041 }
00042
00043 #endif
00044