00001
00002
00003
00004
00005
00006
00007
00009 #ifndef JOBCRESULT_H
00010 #define JOBCRESULT_H
00011 #ifndef IOSFWD
00012 #include <iosfwd>
00013 #define IOSFWD
00014 #endif
00015
00016 class JobCResult
00017 {
00018 friend std::ostream& operator<<(std::ostream& os, const JobCResult& r);
00019 public:
00020
00021
00022
00023
00024 typedef enum EErrorFlag {
00025 kAOK =0,
00026 kWarning =1,
00027 kError =2,
00028 kFatal =3
00029 } Error_t;
00030
00031
00032 typedef enum EDecisionFlag {
00033 kPassed,
00034 kFailed
00035 } Decision_t;
00036
00037
00038 typedef enum EIoFlag {
00039 kBeginFile,
00040 kEndFile,
00041 kBeginRun,
00042 kEndRun,
00043 kBeginOfInputStream,
00044 kEndOfInputStream,
00045 kNonPhysicsRecord
00046 } IoFlag_t;
00047
00048
00049 public:
00050 JobCResult(JobCResult::Error_t result=kAOK);
00051 JobCResult(JobCResult::Decision_t result);
00052 JobCResult(JobCResult::IoFlag_t result);
00053
00054 JobCResult& operator=(JobCResult::Error_t result);
00055 JobCResult& operator=(JobCResult::Decision_t result);
00056 JobCResult& operator=(JobCResult::IoFlag_t result);
00057 JobCResult& operator|=(const JobCResult& rhs);
00058
00059
00060 bool HaveError() const;
00061 bool HaveDecision() const;
00062 bool HaveIoFlag() const;
00063
00064
00065 JobCResult::Error_t ErrorLevel() const;
00066 bool Passed() const;
00067 bool Failed() const;
00068 bool BeginFile() const;
00069 bool EndFile() const;
00070 bool BeginRun() const;
00071 bool EndRun() const;
00072 bool BeginOfInputStream() const;
00073 bool EndOfInputStream() const;
00074 bool NonPhysicsRecord() const;
00075
00076
00077 JobCResult& SetAOK();
00078 JobCResult& SetWarning();
00079 JobCResult& SetError();
00080 JobCResult& SetFatal();
00081 JobCResult& SetFailed();
00082 JobCResult& SetPassed();
00083 JobCResult& ClearPassFail();
00084 JobCResult& SetBeginFile();
00085 JobCResult& SetEndFile();
00086 JobCResult& SetBeginRun();
00087 JobCResult& SetEndRun();
00088 JobCResult& SetBeginOfInputStream();
00089 JobCResult& SetEndOfInputStream();
00090 JobCResult& SetNonPhysicsRecord();
00091
00092 private:
00093
00094 static const int kErrorMask = 0x000F;
00095 static const int kAOKFlg = 0x0000;
00096 static const int kWarningFlg = 0x0001;
00097 static const int kErrorFlg = 0x0002;
00098 static const int kFatalFlg = 0x0004;
00099
00100 static const int kDecisionMask = 0x00F0;
00101 static const int kPassFlg = 0x0010;
00102 static const int kFailFlg = 0x0020;
00103
00104 static const int kIoMask = 0xFF00;
00105 static const int kBeginFileFlg = 0x0100;
00106 static const int kEndFileFlg = 0x0200;
00107 static const int kBeginRunFlg = 0x0400;
00108 static const int kEndRunFlg = 0x0800;
00109 static const int kEndOfInputStreamFlg = 0x1000;
00110 static const int kNonPhysicsRecordFlg = 0x2000;
00111 static const int kBeginOfInputStreamFlg = 0x4000;
00112
00113 int fResult;
00114 };
00115
00116 #endif // JOBCRESULT_H
00117
00118