LUMIERA.clone/src/steam/engine/buffer-provider-setup.hpp
Ichthyostega a9bdad2c66 BufferProvider: draft a new layout for the implementation
As a consequence of preceding experiments..
 * I'll stick to the structure of the BufferProvider front-end interface
 * also the »code behind« will remain there; a purely abstract API has no merit here
 * however, the ''setup'' of the actual implementation will move into a derived class
 * this derived scope class, `BufferProviderSetup` will house two implementation classes
 * these two, now named `Stage` and `Store` provide the base implementation
   for the two "pillars" of the implementation

Admitted, this structure is now much more elaborate, but it's the only path forward
I'm currently able to come up in order to disentangle the existing implementation mess...
2026-02-10 21:11:02 +01:00

88 lines
1.9 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
BUFFER-PROVIDER-SETUP.hpp - configuration of the actual BufferProvider implementation
Copyright (C)
2026, Hermann Vosseler <Ichthyostega@web.de>
  **Lumiera** 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. See the file COPYING for further details.
*/
/** @file buffer-provider-setup.hpp
** Helper template for installing a suitable BufferProvider setup.
**
** @see engine-facilities.cpp
** @see buffer-provider.hpp
*/
#ifndef STEAM_ENGINE_BUFFR_PROVIDER_SETUP_H
#define STEAM_ENGINE_BUFFR_PROVIDER_SETUP_H
#include "lib/error.hpp"
#include "lib/symbol.hpp"
#include "lib/hash-value.h"
#include "steam/engine/buffhandle.hpp"
//#include "steam/engine/engine-ctx.hpp"
#include "steam/engine/type-handler.hpp"
#include "steam/engine/buffer-local-tag.hpp"
#include "lib/nocopy.hpp"
#include <utility>
#include <memory>
namespace steam {
namespace engine {
using lib::Literal;
using std::unique_ptr;
using std::forward;
class BufferMetadata;
LUMIERA_ERROR_DECLARE (BUFFER_MANAGEMENT); ///< Problem providing working buffers
/**
* Framework for configuring the actual BufferPovider backend implementation.
*
* @todo WIP-WIP-WIP as of 2/2026 -- reworking BufferProvider implementation ////////////////////////////TICKET #1410
*/
class BufferProviderSetup
: public BufferProvider
{
public:
BufferProviderSetup (Literal implementationID);
class Stage
: protected BufferStage
{
};
class Store
: protected BufferStore
{
};
protected:
};
/* === Implementation === */
/** */
}} // namespace steam::engine
#endif /*STEAM_ENGINE_BUFFR_PROVIDER_SETUP_H*/