1//---------------------------------------------------------------------- 2// This software is part of the Haiku distribution and is covered 3// by the MIT License. 4//--------------------------------------------------------------------- 5/*! 6 \file sniffer/PatternList.h 7 MIME sniffer pattern list declarations 8*/ 9#ifndef _SNIFFER_PATTERN_LIST_H 10#define _SNIFFER_PATTERN_LIST_H 11 12#include <sniffer/DisjList.h> 13#include <sniffer/Range.h> 14#include <vector> 15 16class BPositionIO; 17 18namespace BPrivate { 19namespace Storage { 20namespace Sniffer { 21 22class Err; 23class Pattern; 24 25/*! \brief A list of patterns, one of which must match for the list to match, all 26 of which are to be searched over the same range. 27*/ 28class PatternList : public DisjList { 29public: 30 PatternList(Range range); 31 virtual ~PatternList(); 32 33 status_t InitCheck() const; 34 Err* GetErr() const; 35 36 virtual bool Sniff(BPositionIO *data) const; 37 virtual ssize_t BytesNeeded() const; 38 39 void Add(Pattern *pattern); 40private: 41 std::vector<Pattern*> fList; 42 Range fRange; 43}; 44 45}; // namespace Sniffer 46}; // namespace Storage 47}; // namespace BPrivate 48 49#endif // _SNIFFER_PATTERN_LIST_H 50 51 52