Line data Source code
1 : //
2 : // Copyright (c) 2025 Vinnie Falco (vinnie dot falco at gmail dot com)
3 : //
4 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 : //
7 : // Official repository: https://github.com/cppalliance/capy
8 : //
9 :
10 : #ifndef BOOST_CAPY_FRAME_ALLOCATOR_HPP
11 : #define BOOST_CAPY_FRAME_ALLOCATOR_HPP
12 :
13 : #include <boost/capy/detail/config.hpp>
14 : #include <boost/capy/detail/frame_memory_resource.hpp>
15 :
16 : #include <memory_resource>
17 :
18 : namespace boost {
19 : namespace capy {
20 :
21 : /** Thread-local storage for the current frame allocator.
22 :
23 : This function returns a reference to the thread-local pointer
24 : that holds the current memory_resource for frame allocation.
25 : The pointer is set by run_async before creating any tasks.
26 :
27 : @return Reference to the thread-local memory_resource pointer.
28 : */
29 : inline std::pmr::memory_resource*&
30 16690 : current_frame_allocator() noexcept
31 : {
32 : static thread_local std::pmr::memory_resource* mr = nullptr;
33 16690 : return mr;
34 : }
35 :
36 : // For backward compatibility
37 : using detail::frame_memory_resource;
38 :
39 : } // namespace capy
40 : } // namespace boost
41 :
42 : #endif
|