xref: /haiku/headers/private/storage/sniffer/Rule.h (revision 09d84e61b6c2629d253dce1e7d7e944943d3e40e)
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>
1368faee10STyler Dauwalder #include <vector>
14674e18fbSTyler Dauwalder 
1501293d6eSTyler Dauwalder class BPositionIO;
1601293d6eSTyler Dauwalder 
17*09d84e61STyler Dauwalder namespace BPrivate {
18*09d84e61STyler Dauwalder namespace Storage {
19674e18fbSTyler Dauwalder namespace Sniffer {
20674e18fbSTyler Dauwalder 
2193d145bbSTyler Dauwalder class DisjList;
22674e18fbSTyler Dauwalder 
230bc621d5STyler Dauwalder /*! \brief A priority and a list of expressions to be used for sniffing out the
240bc621d5STyler Dauwalder 	type of an untyped file.
250bc621d5STyler Dauwalder */
26674e18fbSTyler Dauwalder class Rule {
27674e18fbSTyler Dauwalder public:
28674e18fbSTyler Dauwalder 	Rule();
2968faee10STyler Dauwalder 	~Rule();
3001293d6eSTyler Dauwalder 
3101293d6eSTyler Dauwalder 	status_t InitCheck() const;
3201293d6eSTyler Dauwalder 
3301293d6eSTyler Dauwalder 	double Priority() const;
3401293d6eSTyler Dauwalder 	bool Sniff(BPositionIO *data) const;
35674e18fbSTyler Dauwalder private:
3668faee10STyler Dauwalder 	friend class Parser;
3768faee10STyler Dauwalder 
3868faee10STyler Dauwalder 	void Unset();
3993d145bbSTyler Dauwalder 	void SetTo(double priority, std::vector<DisjList*>* list);
4068faee10STyler Dauwalder 
4168faee10STyler Dauwalder 	double fPriority;
4293d145bbSTyler Dauwalder 	std::vector<DisjList*> *fConjList;	// A list of DisjLists to be ANDed
43674e18fbSTyler Dauwalder };
44674e18fbSTyler Dauwalder 
45*09d84e61STyler Dauwalder };	// namespace Sniffer
46*09d84e61STyler Dauwalder };	// namespace Storage
47*09d84e61STyler Dauwalder };	// namespace BPrivate
48674e18fbSTyler Dauwalder 
4982b75665STyler Dauwalder #endif	// _SNIFFER_RULE_H
50*09d84e61STyler Dauwalder 
51*09d84e61STyler Dauwalder 
52