1674e18fbSTyler Dauwalder //---------------------------------------------------------------------- 2674e18fbSTyler Dauwalder // This software is part of the OpenBeOS distribution and is covered 3674e18fbSTyler Dauwalder // by the OpenBeOS license. 4674e18fbSTyler Dauwalder //--------------------------------------------------------------------- 5674e18fbSTyler Dauwalder /*! 6674e18fbSTyler Dauwalder \file sniffer/Rule.h 7674e18fbSTyler Dauwalder Mime sniffer rule declarations 8674e18fbSTyler Dauwalder */ 982b75665STyler Dauwalder #ifndef _SNIFFER_RULE_H 1082b75665STyler Dauwalder #define _SNIFFER_RULE_H 11674e18fbSTyler Dauwalder 1201293d6eSTyler Dauwalder #include <SupportDefs.h> 13*2150894bSTyler Dauwalder 14*2150894bSTyler Dauwalder #include <sys/types.h> 1568faee10STyler Dauwalder #include <vector> 16674e18fbSTyler Dauwalder 1701293d6eSTyler Dauwalder class BPositionIO; 1801293d6eSTyler Dauwalder 1909d84e61STyler Dauwalder namespace BPrivate { 2009d84e61STyler Dauwalder namespace Storage { 21674e18fbSTyler Dauwalder namespace Sniffer { 22674e18fbSTyler Dauwalder 2393d145bbSTyler Dauwalder class DisjList; 24674e18fbSTyler Dauwalder 250bc621d5STyler Dauwalder /*! \brief A priority and a list of expressions to be used for sniffing out the 260bc621d5STyler Dauwalder type of an untyped file. 270bc621d5STyler Dauwalder */ 28674e18fbSTyler Dauwalder class Rule { 29674e18fbSTyler Dauwalder public: 30674e18fbSTyler Dauwalder Rule(); 3168faee10STyler Dauwalder ~Rule(); 3201293d6eSTyler Dauwalder 3301293d6eSTyler Dauwalder status_t InitCheck() const; 3401293d6eSTyler Dauwalder double Priority() const; 3501293d6eSTyler Dauwalder bool Sniff(BPositionIO *data) const; 36*2150894bSTyler Dauwalder ssize_t BytesNeeded() const; 37674e18fbSTyler Dauwalder private: 3868faee10STyler Dauwalder friend class Parser; 3968faee10STyler Dauwalder 4068faee10STyler Dauwalder void Unset(); 4193d145bbSTyler Dauwalder void SetTo(double priority, std::vector<DisjList*>* list); 4268faee10STyler Dauwalder 4368faee10STyler Dauwalder double fPriority; 4493d145bbSTyler Dauwalder std::vector<DisjList*> *fConjList; // A list of DisjLists to be ANDed 45674e18fbSTyler Dauwalder }; 46674e18fbSTyler Dauwalder 4709d84e61STyler Dauwalder }; // namespace Sniffer 4809d84e61STyler Dauwalder }; // namespace Storage 4909d84e61STyler Dauwalder }; // namespace BPrivate 50674e18fbSTyler Dauwalder 5182b75665STyler Dauwalder #endif // _SNIFFER_RULE_H 5209d84e61STyler Dauwalder 5309d84e61STyler Dauwalder 54