LArSoft  v09_90_00
Liquid Argon Software toolkit - https://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 
14 #include <memory>
15 #include <variant>
16 
17 namespace art {
18  class Group;
19  class GroupQueryResult;
20 
21  using group_ptr_t = cet::exempt_ptr<Group>;
22  using exception_ptr_t = std::shared_ptr<art::Exception const>;
23 } // namespace art
24 
25 // ======================================================================
26 
28 public:
29  explicit GroupQueryResult(group_ptr_t);
31 
32  // observers
33  bool
34  succeeded() const
35  {
36  return std::holds_alternative<group_ptr_t>(groupOrException_);
37  }
38  bool
39  failed() const
40  {
41  return std::holds_alternative<exception_ptr_t>(groupOrException_);
42  }
43 
44  // properties
45  cet::exempt_ptr<Group>
46  result() const
47  {
48  auto result = std::get_if<group_ptr_t>(&groupOrException_);
49  return result ? *result : nullptr;
50  }
51  std::shared_ptr<art::Exception const>
52  whyFailed() const
53  {
54  auto result = std::get_if<exception_ptr_t>(&groupOrException_);
55  return result ? *result : nullptr;
56  }
57 
58 private:
59  std::variant<group_ptr_t, exception_ptr_t> groupOrException_;
60 }; // GroupQueryResult
61 
62 // ======================================================================
63 
64 #endif /* art_Persistency_Common_GroupQueryResult_h */
65 
66 // Local Variables:
67 // mode: c++
68 // End:
cet::exempt_ptr< Group > group_ptr_t
GroupQueryResult(group_ptr_t)
std::shared_ptr< art::Exception const > whyFailed() const
std::shared_ptr< art::Exception const > exception_ptr_t
std::variant< group_ptr_t, exception_ptr_t > groupOrException_
cet::exempt_ptr< Group > result() const
Definition: MVAAlg.h:12