|
|
|||
File indexing completed on 2026-07-26 08:21:57
0001 /** TRACCC library, part of the ACTS project (R&D line) 0002 * 0003 * (c) 2021-2022 CERN for the benefit of the ACTS project 0004 * 0005 * Mozilla Public License Version 2.0 0006 */ 0007 0008 #pragma once 0009 0010 // Project include(s). 0011 #include "traccc/definitions/qualifiers.hpp" 0012 0013 namespace traccc { 0014 0015 /** 0016 * @brief View class for an element in a header-vector container. 0017 * 0018 * In order to enforce certain invariants on the @c container header-vector 0019 * type, we access elements (which, of course, are product types of a header 0020 * and a vector) through this wrapper class. This class provides 0021 * low-overhead access to the struct-of-arrays container class to emulate an 0022 * array-of-structs architecture. 0023 * 0024 * @tparam header_reference_t The type of reference of the header object. 0025 * @tparam vector_reference_t The fully qualified vector reference type. 0026 */ 0027 template <typename header_reference_t, typename vector_reference_t> 0028 struct container_element { 0029 /// Header reference type 0030 using header_reference = header_reference_t; 0031 /// Vector reference type 0032 using vector_reference = vector_reference_t; 0033 0034 /** 0035 * @brief Construct a new container element view. 0036 * 0037 * This constructor is extremely trivial, as it simply takes a reference 0038 * to a header, a reference to a vector, and saves them in this object's 0039 * internal state. 0040 * 0041 * @param[in] h The header object reference. 0042 * @param[in] v The vector object reference. 0043 */ 0044 TRACCC_HOST_DEVICE 0045 container_element(header_reference h, vector_reference v) 0046 : header(h), items(v) {} 0047 0048 header_reference header; 0049 vector_reference items; 0050 }; // struct container_element 0051 0052 } // namespace traccc
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|