Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-27 07:24:06

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 // Project include(s)
0012 #include "detray/builders/detector_builder.hpp"
0013 
0014 // System include(s)
0015 #include <concepts>
0016 #include <string_view>
0017 
0018 namespace detray::io::concepts {
0019 
0020 /// Concept for detray io reader backends
0021 template <typename D, typename R>
0022 concept reader_backend =
0023     requires(const R rb, detector_builder<typename D::metadata> det_builder) {
0024       typename R::payload_type;
0025 
0026       { R::tag } -> std::same_as<const std::string_view&>;
0027 
0028       {
0029         R::template from_payload<D>(det_builder, typename R::payload_type())
0030       } -> std::same_as<void>;
0031     };
0032 
0033 /// Concept for detray io writer backends
0034 template <typename D, typename W>
0035 concept writer_backend =
0036     requires(const W wb, D det, typename D::name_map names) {
0037       typename W::payload_type;
0038 
0039       { W::tag } -> std::same_as<const std::string_view&>;
0040 
0041       { W::to_payload(det, names) } -> std::same_as<typename W::payload_type>;
0042     };
0043 
0044 }  // namespace detray::io::concepts