lumiera_documentation/src/steam/engine/engine-ctx-facilities.cpp
Ichthyostega 4a83f97c9e Invocation: draft setup for engine context and config
Prototyping and analysis revealed that some aspects of the render node wiring
refers to effectively global services and can thus be taken out of the picture
by relying on classical ''Dependency Injection''

Consequently, `EngineCtx` needs a default implementation, which brings up
a simplistic fall-back version of those services in support for prototyping.
Moreover, dedicated lifecycle functionality must be provided to bring up
and shut down the actual service instances intended for operational use.
2024-10-11 16:57:10 +02:00

77 lines
2.1 KiB
C++

/*
EngineCtxFacilities - Implementation of global render engine operational services
Copyright (C) Lumiera.org
2024, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
/** @file engine-ctx-facilities.hpp
** Implementation parts of render engine operational services.
** @warning as of 10/2024 a preliminary integration of Render-Engine underway ////////////////////////////////////////TICKET #1367
*/
#include "steam/engine/engine-ctx-facilities.hpp"
//#include <string>
//#include <memory>
//#include <functional>
namespace steam {
namespace engine{
// using std::string;
// using lumiera::Subsys;
// using std::function;
// using std::bind;
// using std::ref;
namespace { // hidden local details of the service implementation....
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Temp Placeholder
BufferProvider* kabooom{nullptr};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Temp Placeholder
} // (End) hidden service impl details
/** storage for the EngineService interface object */
lib::Depend<EngineCtx> EngineCtx::access;
/** */
EngineCtx::EngineCtx()
: mem{*kabooom}
, cache{*kabooom}
{ }
/** core operation: blah blubb....
*/
}} // namespace steam::engine