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