vitrio 0.1.4
High-throughput image I/O for Cryo-Electron Microscopy (CryoEM)
Loading...
Searching...
No Matches
const_array.hpp
1// SPDX-License-Identifier: LGPL-2.1-or-later
2
3#pragma once
4
5#include <vitrio/array/array_descriptor.hpp>
6#include <vitrio/byte.hpp>
7#include <vitrio/export.hpp>
8#include <vitrio/span.hpp>
9
10#include <memory>
11
12namespace vitrio
13{
14
15class array_implementation;
16
29{
30public:
36 VITRIO_API
37 const_array() noexcept;
38
54 VITRIO_API
56 span<const byte> memory,
57 std::shared_ptr<const void> owner,
58 array_descriptor descriptor
59 );
60
61 const_array(const const_array &other) = delete;
62 VITRIO_API
63 const_array(const_array &&other) noexcept;
64 VITRIO_API
65 ~const_array();
66
67 const_array& operator=(const const_array &other) = delete;
68 VITRIO_API
69 const_array& operator=(const_array &&other) noexcept;
70
77 VITRIO_API
78 const array_descriptor& get_descriptor() const noexcept;
79
87 VITRIO_API
88 const byte* get_data() const noexcept;
89
96 VITRIO_API
97 const_array share() const noexcept;
98
99private:
100 friend class array;
101
102 explicit const_array(
103 std::shared_ptr<const array_implementation> implementation
104 ) noexcept;
105
106 std::shared_ptr<const array_implementation> m_implementation;
107};
108
109} // namespace vitrio
How a block of memory is read as a multidimensional array.
Definition array_descriptor.hpp:31
A multidimensional array of numbers in host memory.
Definition array.hpp:37
A multidimensional array of numbers that cannot be written through.
Definition const_array.hpp:29
const array_descriptor & get_descriptor() const noexcept
Get how the memory is read as an array.
const byte * get_data() const noexcept
Get the memory holding the elements.
const_array() noexcept
Construct an array that holds nothing.
const_array share() const noexcept
Make another read-only array over the same memory.
A view of a contiguous sequence of elements.
Definition span.hpp:29