SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
Resource.h
1#pragma once
2
3namespace spark::render
4{
9 template <typename Handle>
11 {
12 public:
13 using handle_type = Handle;
14
15 public:
16 virtual ~IResource() noexcept = default;
17
22 [[nodiscard]] virtual const Handle& handle() const = 0;
23
24 protected:
29 [[nodiscard]] virtual Handle& handle() = 0;
30 };
31
32 template <typename Handle>
33 class Resource : public virtual IResource<Handle>
34 {
35 public:
40 explicit Resource(Handle handle) noexcept;
41 ~Resource() noexcept override = default;
42
43 Resource(const Resource& other) = delete;
44 Resource(Resource&& other) noexcept = delete;
45 Resource& operator=(const Resource& other) = delete;
46 Resource& operator=(Resource&& other) noexcept = delete;
47
49 [[nodiscard]] const Handle& handle() const final;
50
51 protected:
53 [[nodiscard]] Handle& handle() final;
54
55 private:
56 Handle m_handle;
57 };
58}
59
60#include "spark/render/impl/Resource.h"
Provides access to a resource managed by the derived class.
Definition Resource.h:11
virtual const Handle & handle() const =0
Gets the managed resource handle.
virtual Handle & handle()=0
Gets the managed resource handle.
Definition Resource.h:34
const Handle & handle() const final
Gets the managed resource handle.
Definition Resource.h:12