vecmem 1.23.0
Loading...
Searching...
No Matches
async_size.hpp
1/*
2 * VecMem project, part of the ACTS project (R&D line)
3 *
4 * (c) 2025 CERN for the benefit of the ACTS project
5 *
6 * Mozilla Public License Version 2.0
7 */
8#pragma once
9
10// Local include(s).
11#include "vecmem/memory/unique_ptr.hpp"
12#include "vecmem/utils/abstract_event.hpp"
13
14// System include(s).
15#include <memory>
16#include <type_traits>
17
18namespace vecmem {
19
24template <typename SIZE_TYPE>
25class async_size : public abstract_event {
26
27public:
34 std::add_lvalue_reference_t<std::add_const_t<size_type>>;
36 using event_type = std::unique_ptr<abstract_event>;
37
44
49 const_reference get() const;
50
53
56 void wait() override;
57
59 void ignore() override;
60
62
63private:
65 storage_type m_size;
67 event_type m_event;
68
69}; // class async_size
70
71} // namespace vecmem
72
73// Include the implementation.
74#include "vecmem/utils/impl/async_size.ipp"
An allocator class that wraps a memory resource.
Definition allocator.hpp:37
Return type for asynchronous size retrievals.
Definition async_size.hpp:25
void ignore() override
Function telling the object not to wait for the underlying event.
Definition async_size.ipp:31
std::unique_ptr< abstract_event > event_type
Type of the held event.
Definition async_size.hpp:36
unique_alloc_ptr< size_type > storage_type
Underlying type that stores the size variable on the heap.
Definition async_size.hpp:31
const_reference get() const
Access the async/future value.
Definition async_size.ipp:17
void wait() override
Function that would block the current thread until the event is complete.
Definition async_size.ipp:25
std::add_lvalue_reference_t< std::add_const_t< size_type > > const_reference
Constant (lvalue) reference to the stored size.
Definition async_size.hpp:34
Main namespace for the vecmem classes/functions.
Definition atomic_ref.hpp:16
Interface that language specific "events" need to implement.
Definition abstract_event.hpp:21