MOS
resource.hpp
1 #pragma once
2 
3 #include <AL/al.h>
4 #include <AL/alc.h>
5 #include <AL/alext.h>
6 #include <AL/efx-presets.h>
7 
8 #include <chrono>
9 #include <functional>
10 
11 namespace mos::al {
12 
14 class Resource {
15 public:
16  using Gen_function = std::function<void(ALsizei, ALuint *)>;
17  using Delete_function = std::function<void(ALsizei, const ALuint *)>;
18  using Time_point = std::chrono::time_point<std::chrono::system_clock,
19  std::chrono::nanoseconds>;
20 
21  Resource(const Gen_function& gen_function,
22  const Delete_function& delete_function);
23  Resource(const Resource &Resource) = delete;
24  Resource(Resource &&Resource) noexcept;
25  ~Resource();
26 
27  Resource &operator=(const Resource resource) = delete;
28  Resource &operator=(Resource &&resource) noexcept;
29 
30  Gen_function gen_function;
31  Delete_function delete_function;
32 
33  Time_point modified;
34  ALuint id{0};
35 
36 private:
37  void release();
38 };
39 } // namespace mos::al
Definition: buffer.hpp:13
General resource living on the APU.
Definition: resource.hpp:14