00001 #ifndef TAGCOLL_FILTERCHAIN_H
00002 #define TAGCOLL_FILTERCHAIN_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #pragma interface
00025
00026 #include <tagcoll/TagcollConsumer.h>
00027 #include <tagcoll/TagcollFilter.h>
00028
00029 namespace Tagcoll
00030 {
00031
00032
00033 template<class ITEM, class TAG>
00034 class FilterChain : public TagcollConsumer<ITEM, TAG>
00035 {
00036 protected:
00037 TagcollConsumer<ITEM, TAG>* consumer;
00038 TagcollFilter<ITEM, TAG>* last;
00039
00040 public:
00041 FilterChain<ITEM, TAG>() throw () : consumer(0), last(0) {}
00042
00043
00044 void setConsumer(TagcollConsumer<ITEM, TAG>* c) throw ();
00045
00046
00047 void appendFilter(TagcollFilter<ITEM, TAG>* f) throw ();
00048
00049
00050
00051
00052 void deleteFilters() throw ();
00053
00054
00055 virtual void consume(const ITEM& item) throw ();
00056 virtual void consume(const ITEM& item, const OpSet<TAG>& tags) throw ();
00057 virtual void consume(const OpSet<ITEM>& items) throw ();
00058 virtual void consume(const OpSet<ITEM>& items, const OpSet<TAG>& tags) throw ();
00059 };
00060
00061 };
00062
00063
00064 #endif