From 01293d6ed7ce9f36b10419a3beb603bdfa791d0b Mon Sep 17 00:00:00 2001 From: Tyler Dauwalder Date: Tue, 6 Aug 2002 08:32:27 +0000 Subject: [PATCH] + Added InitCheck() + Added Priority() + Added Sniff() + Replaced ExprList typedef with plain old std::vector so I wouldn't forget what the hell kind of list I was working with. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@607 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/storage/sniffer/Rule.h | 13 +++++++++--- src/kits/storage/sniffer/Rule.cpp | 29 +++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/headers/private/storage/sniffer/Rule.h b/headers/private/storage/sniffer/Rule.h index b6f1235094..500ed5d1d0 100644 --- a/headers/private/storage/sniffer/Rule.h +++ b/headers/private/storage/sniffer/Rule.h @@ -9,25 +9,32 @@ #ifndef _sk_sniffer_rule_h_ #define _sk_sniffer_rule_h_ +#include #include +class BPositionIO; + namespace Sniffer { class Expr; -typedef std::vector ExprList; class Rule { public: Rule(); ~Rule(); + + status_t InitCheck() const; + + double Priority() const; + bool Sniff(BPositionIO *data) const; private: friend class Parser; void Unset(); - void SetTo(double priority, ExprList* list); + void SetTo(double priority, std::vector* list); double fPriority; - ExprList *fExprList; + std::vector *fExprList; }; } diff --git a/src/kits/storage/sniffer/Rule.cpp b/src/kits/storage/sniffer/Rule.cpp index e558bfaafb..4a291c238f 100644 --- a/src/kits/storage/sniffer/Rule.cpp +++ b/src/kits/storage/sniffer/Rule.cpp @@ -7,7 +7,9 @@ MIME sniffer rule implementation */ +#include #include +#include using namespace Sniffer; @@ -21,6 +23,31 @@ Rule::~Rule() { Unset(); } +status_t +Rule::InitCheck() const { + return fExprList ? B_OK : B_NO_INIT; +} + + +double +Rule::Priority() const { + return fPriority; +} + +bool +Rule::Sniff(BPositionIO *data) const { + if (InitCheck() != B_OK) + return false; + else { + bool result = true; + std::vector::const_iterator i; + for (i = fExprList->begin(); i != fExprList->end(); i++) { + if (*i) + result &= (*i)->Sniff(data); + } + } +} + void Rule::Unset() { if (fExprList){ @@ -30,7 +57,7 @@ Rule::Unset() { } void -Rule::SetTo(double priority, ExprList* list) { +Rule::SetTo(double priority, std::vector* list) { Unset(); fPriority = priority; fExprList = list;