00001 /* 00002 * FilterStream.h 00003 * ERS 00004 * 00005 * Created by Matthias Wiesmann on 31.03.05. 00006 * Copyright 2005 CERN. All rights reserved. 00007 * 00008 */ 00009 00010 #ifndef ERS_FILTERSTREAM 00011 #define ERS_FILTERSTREAM 00012 00013 #include "ers/Stream.h" 00014 00015 namespace ers { 00016 00038 class FilterStream : public Stream { 00039 protected: 00040 Stream *m_target_stream_ptr ; 00041 std::vector<std::string> m_include ; 00042 std::vector<std::string> m_exclude ; 00043 FilterStream() ; 00044 FilterStream(const FilterStream &other); 00045 public: 00046 static const char *const FILTER_STREAM_TAG ; 00047 static const char *const INCLUDE_TAG ; 00048 static const char *const EXCLUDE_TAG ; 00049 static const char *const TARGET_TAG ; 00050 static const char *const SEPARATORS ; 00051 static FilterStream *factory(const std::string &include_str, const::std::string &exclude_str, const std::string &target_str) ; 00052 static FilterStream *factory(const std::string ¶meters); 00053 FilterStream(Stream *target_ptr, 00054 const std::vector<std::string> & include_list, 00055 const std::vector<std::string> & exclude_list) ; 00056 ~FilterStream() ; 00057 virtual bool is_accept(const Issue* issue_ptr); 00058 virtual void send(const Issue *issue_ptr) ; 00059 virtual void print_to(std::ostream& stream) const ; 00060 00061 } ; // FilterStream 00062 00063 } // ers 00064 00065 #endif