ARC SDK
SubmissionStatus.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef __ARC_SUBMISSIONSTATUS_H__
4 #define __ARC_SUBMISSIONSTATUS_H__
5 
6 namespace Arc {
7 
13  private:
14  static const unsigned int maxValue = (1 << 8) - 1;
15  public:
16  enum SubmissionStatusType {
17  NONE = 0,
18  NOT_IMPLEMENTED = 1 << 0,
19  NO_SERVICES = 1 << 1,
20  ENDPOINT_NOT_QUERIED = 1 << 2,
21  BROKER_PLUGIN_NOT_LOADED = 1 << 3,
22  DESCRIPTION_NOT_SUBMITTED = 1 << 4,
23  SUBMITTER_PLUGIN_NOT_LOADED = 1 << 5,
24  AUTHENTICATION_ERROR = 1 << 6,
25  ERROR_FROM_ENDPOINT = 1 << 7
26  };
27 
28  SubmissionStatus() : status(NONE) {}
29  SubmissionStatus(const SubmissionStatus& s) : status(s.status) {}
30  SubmissionStatus(SubmissionStatusType s) : status(s) {}
31  SubmissionStatus(unsigned int s) : status(s & maxValue) {}
32 
33  SubmissionStatus& operator|=(SubmissionStatusType s) { status |= s; return *this; }
34  SubmissionStatus& operator|=(const SubmissionStatus& s) { status |= s.status; return *this; }
35  SubmissionStatus& operator|=(unsigned int s) { status |= (s & maxValue); return *this; }
36 
37  SubmissionStatus operator|(SubmissionStatusType s) const { return (status | s); }
38  SubmissionStatus operator|(const SubmissionStatus& s) const { return (status | s.status); }
39  SubmissionStatus operator|(unsigned int s) const { return (status | (s & maxValue)); }
40 
41  SubmissionStatus& operator&=(SubmissionStatusType s) { status &= s; return *this; }
42  SubmissionStatus& operator&=(const SubmissionStatus& s) { status &= s.status; return *this; }
43  SubmissionStatus& operator&=(unsigned int s) { status &= s; return *this; }
44 
45  SubmissionStatus operator&(SubmissionStatusType s) const { return (status & s); }
46  SubmissionStatus operator&(const SubmissionStatus& s) const { return (status & s.status); }
47  SubmissionStatus operator&(unsigned int s) const { return (status & s); }
48 
49  SubmissionStatus& operator=(SubmissionStatusType s) { status = s; return *this; }
50  SubmissionStatus& operator=(unsigned int s) { status = (s & maxValue); return *this; }
51 
52  operator bool() const { return status == NONE; }
53 
54  bool operator==(const SubmissionStatus& s) const { return status == s.status; }
55  bool operator==(SubmissionStatusType s) const { return status == (unsigned int)s; }
56  bool operator==(unsigned int s) const { return status == s; }
57  friend bool operator==(SubmissionStatusType a, const SubmissionStatus& b);
58 
59  bool operator!=(const SubmissionStatus& s) const { return !operator==(s); }
60  bool operator!=(SubmissionStatusType s) const { return !operator==(s); }
61  bool operator!=(unsigned int s) const { return !operator==(s); }
62 
63  bool isSet(SubmissionStatusType s) const { return (s & status) == (unsigned int)s; }
64  void unset(SubmissionStatusType s) { status &= (~s); }
65 
66  private:
67  unsigned int status;
68  };
69 
70  inline bool operator==(SubmissionStatus::SubmissionStatusType a, const SubmissionStatus& b) { return (unsigned int)a == b.status; }
71 }
72 
73 #endif // __ARC_SUBMISSIONSTATUS_H__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
Definition: SubmissionStatus.h:12