Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-06-30 08:34:27

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2025 Dmitry Kalinkin
0003 
0004 #pragma once
0005 
0006 #include <algorithms/service.h>
0007 #include <memory>
0008 
0009 class ActsGeometryProvider;
0010 
0011 namespace algorithms {
0012 
0013 class ActsSvc : public Service<ActsSvc> {
0014 public:
0015   void init(std::shared_ptr<const ActsGeometryProvider> provider = nullptr) {
0016     m_acts_geometry_provider = provider;
0017   };
0018 
0019   void init(std::exception_ptr&& _failure) { failure = std::move(_failure); }
0020 
0021   std::shared_ptr<const ActsGeometryProvider> acts_geometry_provider() {
0022     if (failure) {
0023       std::rethrow_exception(failure);
0024     }
0025     return m_acts_geometry_provider;
0026   }
0027 
0028 protected:
0029   std::shared_ptr<const ActsGeometryProvider> m_acts_geometry_provider{nullptr};
0030   std::exception_ptr failure;
0031 
0032   ALGORITHMS_DEFINE_SERVICE(ActsSvc)
0033 };
0034 
0035 } // namespace algorithms