LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
GroupQueryResult.h
Go to the documentation of this file.
1 #ifndef art_Persistency_Common_GroupQueryResult_h
2 #define art_Persistency_Common_GroupQueryResult_h
3 
4 // ======================================================================
5 //
6 // GroupQueryResult: A pointer-to-const-Group satisfying a query, or an
7 // exception object explaining a failed query.
8 //
9 // ======================================================================
10 
12 #include "cetlib/exempt_ptr.h"
13 #include "cetlib_except/exception.h"
14 
15 #include <memory>
16 
17 namespace art {
18  // defined below:
19  class GroupQueryResult;
20 
21  // forward declaration:
22  class Group;
23 }
24 
25 // ======================================================================
26 
28 public:
29  // c'tors:
30  GroupQueryResult(cet::exempt_ptr<Group const>);
31  GroupQueryResult(std::shared_ptr<art::Exception const>);
32 
33  // observers:
34  bool
35  succeeded() const
36  {
37  return static_cast<bool>(result_);
38  }
39  bool
40  failed() const
41  {
42  return static_cast<bool>(whyFailed_);
43  }
44 
45  // properties:
46  cet::exempt_ptr<Group const>
47  result() const
48  {
49  return result_;
50  }
51  std::shared_ptr<art::Exception const>
52  whyFailed() const
53  {
54  return whyFailed_;
55  }
56 
57 private:
58  cet::exempt_ptr<Group const> result_{nullptr};
59  std::shared_ptr<art::Exception const> whyFailed_{nullptr};
60 
61  bool
62  invariant() const
63  {
64  return succeeded() != failed();
65  }
66 
67 }; // GroupQueryResult
68 
69 // ======================================================================
70 
71 #endif /* art_Persistency_Common_GroupQueryResult_h */
72 
73 // Local Variables:
74 // mode: c++
75 // End:
cet::exempt_ptr< Group const > result_
std::shared_ptr< art::Exception const > whyFailed() const
GroupQueryResult(cet::exempt_ptr< Group const >)
std::shared_ptr< art::Exception const > whyFailed_
cet::exempt_ptr< Group const > result() const
HLT enums.