Lumiera  0.pre.03
»edit your freedom«
engine-ctx.hpp
Go to the documentation of this file.
1 /*
2  ENGINE-CTX.hpp - Services and parameters used globally within the render engine
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 
31 #ifndef STEAM_ENGINE_ENGINE_CTX_H
32 #define STEAM_ENGINE_ENGINE_CTX_H
33 
34 
35 #include "lib/depend.hpp"
37 #include "lib/nocopy.hpp"
38 
39 //#include <utility>
40 #include <memory>
41 
42 
43 namespace steam {
44 namespace engine {
45 
46 // using lib::Literal;
47 // using std::unique_ptr;
48 // using std::forward;
49 
50  class EngineCtx
52  {
53  class Facilities;
54  std::unique_ptr<Facilities> services_;
55 
56  public:
57  BufferProvider& mem;
58  BufferProvider& cache;
59 // BufferProvider& output; /////////////////////////OOO presumably no longer necessary
60 
62 
63  private:
64  ~EngineCtx();
65  EngineCtx();
66 
67  friend class lib::DependencyFactory<EngineCtx>;
68  };
69 
70 
71 
72 }} // namespace steam::engine
73 #endif /*STEAM_ENGINE_ENGINE_CTX_H*/
Any copy and copy construction prohibited.
Definition: nocopy.hpp:37
Steam-Layer implementation namespace root.
Access point to singletons and other kinds of dependencies designated by type.
Definition: depend.hpp:280
Mix-Ins to allow or prohibit various degrees of copying and cloning.
static lib::Depend< EngineCtx > access
storage for the EngineService interface object
Definition: engine-ctx.hpp:61
A front-end to support the buffer management within the render nodes.
Singleton services and Dependency Injection.
Helper to abstract creation and lifecycle of a dependency.
Definition: depend.hpp:125
Interface: a facility providing and managing working buffers for media calculations.