Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

expression.C

Go to the documentation of this file.
00001 // $Id: expression_C-source.html,v 1.1 2001/04/16 17:43:00 dvermeir Exp $
00002 
00003 #include <algorithm> // for equal()
00004 #include "expression.h"
00005 
00006 ostream&
00007 operator<<(ostream& os,const Expression& e) {
00008 e.print(os);
00009 return os;
00010 }
00011 
00012 /*
00013 bool
00014 PathExpression::eval(const LogRecord& r) const {
00015 const Path& pr(r.path());
00016 if (pr.size() < path_.size())
00017   return false;
00018 return equal(path_.begin(), path_.end(), pr.begin());
00019 }
00020 */
00021 
00022 bool
00023 PathExpression::eval(const LogRecord& r) const {
00024 const string& ps(r.path().str());
00025 if (ps.size() < path_.str().size())
00026   return false;
00027 return equal(path_.str().begin(), path_.str().end(), ps.begin());
00028 }
00029 
00030 void
00031 PathExpression::print(ostream& os) const {
00032 os << "path " << path_;
00033 }
00034 
00035 bool
00036 DomainExpression::eval(const LogRecord& r) const {
00037 const Domain& d(r.domain());
00038 if (d.size() < domain_.size())
00039   return false;
00040 return equal(domain_.begin(), domain_.end(), d.begin());
00041 }
00042 
00043 void
00044 DomainExpression::print(ostream& os) const {
00045 os << "domain " << domain_;
00046 }
00047 
00048 bool
00049 DateExpression::eval(const LogRecord& r) const {
00050 const DatePattern& d(r.date());
00051 if (d.size() < date_.size())
00052   return false;
00053 return equal(date_.begin(), date_.end(), d.begin());
00054 };
00055 
00056 void
00057 DateExpression::print(ostream& os) const {
00058 os << "date " << date_;
00059 }
00060 
00061 void
00062 NotExpression::print(ostream& os)  const{
00063 os << "exclude " << *exp_ ;
00064 }
00065 
00066 AndExpression::~AndExpression() {
00067 for (list<Expression*>::const_iterator i=exps_.begin(); i!=exps_.end(); ++i)
00068   delete *i;
00069 }
00070 
00071 void
00072 AndExpression::print(ostream& os) const {
00073 for (list<Expression*>::const_iterator i=exps_.begin(); i!=exps_.end(); ++i)
00074   os << **i << "\n";
00075 }
00076 
00077 bool
00078 AndExpression::eval(const LogRecord& r) const { 
00079 for (list<Expression*>::const_iterator i=exps_.begin(); i!=exps_.end(); ++i)
00080   if (!(*i)->eval(r))
00081     return false;
00082 return true;
00083 }

httpstats-stage04 [ 7 April, 2001]