HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
resource_view.hpp
1// Copyright Take Vos 2019, 2022.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "void_span.hpp"
8#include <span>
9#include <variant>
10#include <functional>
11#include <cstddef>
12#include <string_view>
13#include <type_traits>
14
15namespace hi::inline v1 {
16
20public:
21 resource_view() = default;
22 virtual ~resource_view() = default;
23 resource_view(resource_view const& other) = default;
24 resource_view(resource_view&& other) = default;
25 resource_view& operator=(resource_view const& other) = default;
26 resource_view& operator=(resource_view&& other) = default;
27
31 [[nodiscard]] virtual std::size_t offset() const noexcept = 0;
32
33
36 [[nodiscard]] virtual const_void_span span() const noexcept = 0;
37};
38
40public:
43 [[nodiscard]] virtual void_span writable_span() noexcept = 0;
44};
45
48[[nodiscard]] inline std::string_view as_string_view(resource_view const &rhs) noexcept
49{
50 return as_string_view(rhs.span());
51}
52
53[[nodiscard]] inline bstring_view as_bstring_view(resource_view const &rhs) noexcept
54{
55 return as_bstring_view(rhs.span());
56}
57
58template<typename T, size_t E = std::dynamic_extent>
59[[nodiscard]] inline std::span<T, E> as_span(resource_view const& rhs) noexcept requires(std::is_const_v<T>)
60{
61 return as_span<T, E>(rhs.span());
62}
63
64template<typename T, size_t E = std::dynamic_extent>
65[[nodiscard]] inline std::span<T, E> as_writable_span(writable_resource_view& rhs) noexcept
66{
67 return as_span<T, E>(rhs.writable_span());
68}
69
70} // namespace hi::inline v1
STL namespace.
DOXYGEN BUG.
Definition algorithm.hpp:15
std::string_view as_string_view(resource_view const &rhs) noexcept
Get a span to the memory mapping.
Definition resource_view.hpp:48
A read-only memory mapping of a resource.
Definition resource_view.hpp:19
virtual std::size_t offset() const noexcept=0
Offset into the resource file.
Definition resource_view.hpp:39
virtual void_span writable_span() noexcept=0
Get a span to the memory mapping.
Definition void_span.hpp:19
Definition void_span.hpp:156