Lumiera  0.pre.03
»edit your freedom«
engine-ctx-facilities.hpp
Go to the documentation of this file.
1 /*
2  ENGINE-CTX-FACILITIES.hpp - Implementation of global render engine operational services
3 
4  Copyright (C)
5  2024, Hermann Vosseler <Ichthyostega@web.de>
6 
7   **Lumiera** is free software; you can redistribute it and/or modify it
8   under the terms of the GNU General Public License as published by the
9   Free Software Foundation; either version 2 of the License, or (at your
10   option) any later version. See the file COPYING for further details.
11 
12 */
13 
28 #ifndef STEAM_ENGINE_ENGINE_CTX_FACILITIES_H
29 #define STEAM_ENGINE_ENGINE_CTX_FACILITIES_H
30 
31 
34 #include "lib/nocopy.hpp"
35 
36 //#include <utility>
37 #include <memory>
38 
39 
40 namespace steam {
41 namespace engine {
42 
43 // using lib::Literal;
44  using std::unique_ptr;
45 // using std::forward;
46 
49  {
50  unique_ptr<BufferProvider> memProvider_;
51  unique_ptr<BufferProvider> cacheProvider_;
52 
53  public:
54  Facilities();
55 
57  getMemProvider()
58  {
59  REQUIRE (memProvider_);
60  return *memProvider_;
61  }
62 
64  getCacheProvider()
65  {
66  return cacheProvider_? *cacheProvider_
67  : *memProvider_;
68  }
69  };
70 
71 
72 
73 }} // namespace steam::engine
74 #endif /*STEAM_ENGINE_ENGINE_CTX_FACILITIES_H*/
Any copy and copy construction prohibited.
Definition: nocopy.hpp:37
Steam-Layer implementation namespace root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
Dependency context to hold global parameters and services for the render engine.
Interface: a facility providing and managing working buffers for media calculations.
Abstraction to represent buffer management and lifecycle within the render engine.