Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

JobCResult.cxx

Go to the documentation of this file.
00001 
00002 // $Id: JobCResult.cxx,v 1.4 2003/02/12 02:16:40 kasahara Exp $
00003 //
00004 // A class for encapsulating the result of running a job module on a
00005 // given data record
00006 //
00007 // messier@huhepl.harvard.edu
00009 #include "JobControl/JobCResult.h"
00010 #include <iostream>
00011 
00012 std::ostream& operator<<(std::ostream& os, const JobCResult& r)
00013 {
00014   os << "[";
00015   if (r.ErrorLevel())       os << "E=" << r.ErrorLevel() << "/";
00016   if (r.Passed())           os << "P/";
00017   if (r.Failed())           os << "F/";
00018   if (r.BeginFile())        os << "BF/";
00019   if (r.EndFile())          os << "EF/";
00020   if (r.BeginRun())         os << "BR/";
00021   if (r.EndRun())           os << "ER/";
00022   if (r.BeginOfInputStream()) os << "BOF/";
00023   if (r.EndOfInputStream()) os << "EOF/";
00024   os << "]";
00025   return os;
00026 }
00027 
00028 //......................................................................
00029 
00030 JobCResult::JobCResult(JobCResult::Error_t result) : fResult(0)
00031 {
00032 //======================================================================
00033 // Assign from an error flag
00034 //======================================================================
00035   switch (result) {
00036   case JobCResult::kAOK:     fResult = kAOKFlg;     break;
00037   case JobCResult::kWarning: fResult = kWarningFlg; break;
00038   case JobCResult::kError:   fResult = kErrorFlg;   break;
00039   case JobCResult::kFatal:   fResult = kFatalFlg;   break;
00040   };
00041 }
00042 //......................................................................
00043 
00044 JobCResult::JobCResult(JobCResult::Decision_t result) : fResult(0)
00045 {
00046 //======================================================================
00047 // Assign from an pass/fail decision flag
00048 //======================================================================
00049   switch (result) {
00050   case JobCResult::kPassed: fResult = kPassFlg; break;
00051   case JobCResult::kFailed: fResult = kFailFlg; break;
00052   };
00053 }
00054 
00055 //......................................................................
00056 
00057 JobCResult::JobCResult(JobCResult::IoFlag_t result) : fResult(0)
00058 {
00059 //======================================================================
00060 // Assign from an I/O status flag
00061 //======================================================================
00062   switch (result) {
00063   case JobCResult::kBeginFile:        fResult= kBeginFileFlg;        break; 
00064   case JobCResult::kEndFile:          fResult= kEndFileFlg;          break;
00065   case JobCResult::kBeginRun:         fResult= kBeginRunFlg;         break;
00066   case JobCResult::kEndRun:           fResult= kEndRunFlg;           break;
00067   case JobCResult::kBeginOfInputStream: fResult= kBeginOfInputStreamFlg; break;
00068   case JobCResult::kEndOfInputStream: fResult= kEndOfInputStreamFlg; break;
00069   case JobCResult::kNonPhysicsRecord: fResult= kNonPhysicsRecordFlg; break;
00070   };
00071 }
00072 
00073 //......................................................................
00074 
00075 JobCResult& JobCResult::operator=(Error_t result) 
00076 {
00077 //======================================================================
00078 // Set any error flags. With the exception of AOK these are cumulative
00079 //======================================================================
00080   switch (result) {
00081   case JobCResult::kAOK:     fResult &= (~kErrorMask); break;
00082   case JobCResult::kWarning: this->SetWarning();       break;
00083   case JobCResult::kError:   this->SetError();         break;
00084   case JobCResult::kFatal:   this->SetFatal();         break;
00085   };
00086   return *this;
00087 }
00088 
00089 //......................................................................
00090 
00091 JobCResult& JobCResult::operator=(Decision_t result) 
00092 {
00093 //======================================================================
00094 // Set the pass/fail result
00095 //======================================================================
00096   switch (result) {
00097   case JobCResult::kPassed: this->SetPassed(); break;
00098   case JobCResult::kFailed: this->SetFailed(); break;
00099   };
00100   return *this;
00101 }
00102 
00103 //......................................................................
00104 
00105 JobCResult& JobCResult::operator=(IoFlag_t result) 
00106 {
00107 //======================================================================
00108 // Set any I/O flags. These are all cumulative
00109 //======================================================================
00110   switch (result) {
00111   case kBeginFile:        this->SetBeginFile(); break;
00112   case kEndFile:          this->SetEndFile();   break;
00113   case kBeginRun:         this->SetBeginRun();  break;
00114   case kEndRun:           this->SetEndRun();    break;
00115   case kBeginOfInputStream: this->SetBeginOfInputStream();  break;
00116   case kEndOfInputStream: this->SetEndOfInputStream();  break;
00117   case kNonPhysicsRecord: this->SetNonPhysicsRecord();    break;
00118   };
00119   return *this;
00120 }
00121 
00122 //......................................................................
00123 
00124 JobCResult& JobCResult::operator|=(const JobCResult& rhs)
00125 {
00126 //======================================================================
00127 // Combine some results
00128 //======================================================================
00129   fResult |= rhs.fResult;
00130   return *this;
00131 }
00132 
00133 //......................................................................
00134 
00135 bool JobCResult::HaveError() const 
00136 {
00137 //======================================================================
00138 // Are any error bits set?
00139 //======================================================================
00140   return (fResult & kErrorMask) != 0;
00141 }
00142 
00143 //......................................................................
00144 
00145 bool JobCResult::HaveDecision() const 
00146 {
00147 //======================================================================
00148 // Are any pass/fail decision bits set?
00149 //======================================================================
00150   return (fResult & kDecisionMask) != 0;
00151 }
00152 
00153 //......................................................................
00154 
00155 bool JobCResult::HaveIoFlag() const 
00156 {
00157 //======================================================================
00158 // Are any I/O flags set?
00159 //======================================================================
00160   return (fResult & kIoMask) != 0;
00161 }
00162 
00163 //......................................................................
00164   
00165 JobCResult::Error_t JobCResult::ErrorLevel() const 
00166 {
00167 //======================================================================
00168 // What's the severity of the error condition?
00169 //======================================================================
00170   Error_t e = kAOK;
00171   if (fResult & kWarningFlg) e = JobCResult::kWarning;
00172   if (fResult & kErrorFlg)   e = JobCResult::kError;
00173   if (fResult & kFatalFlg)   e = JobCResult::kFatal;
00174   return e;
00175 }
00176 
00177 //......................................................................
00178 
00179 //======================================================================
00180 // Return pass/fail decision
00181 //======================================================================
00182 bool JobCResult::Passed() const { return fResult&JobCResult::kPassFlg; }
00183 bool JobCResult::Failed() const { return fResult&JobCResult::kFailFlg; }
00184 
00185 //......................................................................
00186 
00187 bool JobCResult::BeginFile() const
00188 {
00189 //======================================================================
00190 // Have we started a new file?
00191 //======================================================================
00192   return (fResult & kBeginFileFlg)!=0;
00193 }
00194 
00195 //......................................................................
00196 
00197 bool JobCResult::EndFile() const
00198 {
00199 //======================================================================
00200 // Have we finished with a file?
00201 //======================================================================
00202   return (fResult & kEndFileFlg)!=0; 
00203 }
00204 
00205 //......................................................................
00206 
00207 bool JobCResult::BeginRun() const 
00208 { 
00209 //======================================================================
00210 // Have we started a new run?
00211 //======================================================================
00212   return (fResult & kBeginRunFlg)!=0; 
00213 }
00214 
00215 //......................................................................
00216 
00217 bool JobCResult::EndRun() const 
00218 {
00219 //======================================================================
00220 // Have we ended a run?
00221 //======================================================================
00222   return (fResult & kEndRunFlg)!=0; 
00223 }
00224 
00225 //......................................................................
00226 
00227 bool JobCResult::BeginOfInputStream() const 
00228 { 
00229 //======================================================================
00230 // Beginning of input streams?
00231 //======================================================================
00232   return (fResult & kBeginOfInputStreamFlg)!=0; 
00233 }
00234 
00235 //......................................................................
00236 
00237 bool JobCResult::EndOfInputStream() const 
00238 { 
00239 //======================================================================
00240 // Has the input stream run dry?
00241 //======================================================================
00242   return (fResult & kEndOfInputStreamFlg)!=0; 
00243 }
00244 
00245 //......................................................................
00246 
00247 bool JobCResult::NonPhysicsRecord() const 
00248 { 
00249 //======================================================================
00250 // Has the input stream delivered something besides physics events?
00251 //======================================================================
00252   return (fResult & kNonPhysicsRecordFlg)!=0; 
00253 }
00254 
00255 //......................................................................  
00256 
00257 //======================================================================
00258 // Setters for the error condition flags
00259 //======================================================================
00260 JobCResult& JobCResult::SetAOK() {
00261   fResult &= (~kErrorMask); // Lower all error flags
00262   return *this;
00263 }
00264 JobCResult& JobCResult::SetWarning() {
00265   fResult |= kWarningFlg;   
00266   return *this;
00267 }
00268 JobCResult& JobCResult::SetError() {
00269   fResult |= kErrorFlg;     
00270   return *this;
00271 }
00272 JobCResult& JobCResult::SetFatal() {
00273   fResult |= kFatalFlg;
00274   return *this;
00275 }
00276 
00277 //......................................................................
00278 
00279 //======================================================================
00280 // Setters for the pass/fail decision flags
00281 //======================================================================
00282 JobCResult& JobCResult::SetFailed() {
00283   this->ClearPassFail();
00284   fResult |= kFailFlg;
00285   return *this;
00286 }
00287 JobCResult& JobCResult::SetPassed() {
00288   this->ClearPassFail();
00289   fResult |= kPassFlg;
00290   return *this;
00291 }
00292 JobCResult& JobCResult::ClearPassFail() {
00293   fResult &= (~kDecisionMask); 
00294   return *this;
00295 }
00296 
00297 //......................................................................
00298 
00299 //======================================================================
00300 // Setters for the I/O flags
00301 //======================================================================
00302 JobCResult& JobCResult::SetBeginFile() { 
00303   fResult |= kBeginFileFlg;
00304   return *this;
00305 }
00306 JobCResult& JobCResult::SetEndFile() {
00307   fResult |= kEndFileFlg;
00308   return *this;
00309 }
00310 JobCResult& JobCResult::SetBeginRun() {
00311   fResult |= kBeginRunFlg;
00312   return *this;
00313 }
00314 JobCResult& JobCResult::SetEndRun(){ 
00315   fResult |= kEndRunFlg;
00316   return *this;
00317 }
00318 JobCResult& JobCResult::SetBeginOfInputStream() { 
00319   fResult |= kBeginOfInputStreamFlg; 
00320   return *this;
00321 }
00322 JobCResult& JobCResult::SetEndOfInputStream() { 
00323   fResult |= kEndOfInputStreamFlg; 
00324   return *this;
00325 }
00326 JobCResult& JobCResult::SetNonPhysicsRecord() {
00327   fResult |= kNonPhysicsRecordFlg;
00328   return *this;
00329 }
00330 

Generated on Fri Mar 28 15:33:28 2008 for loon by  doxygen 1.3.9.1