Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
bufftable.hpp
Go to the documentation of this file.
1/*
2 BUFFTABLE.hpp - Table of buffer pointers to be used by the render nodes
3
4 Copyright (C)
5 2008, 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
14
24#ifndef ENGINE_BUFFHTABLE_H
25#define ENGINE_BUFFHTABLE_H
26
27
28#include "lib/error.hpp"
31#include "lib/iter-adapter.hpp"
32
33#include <vector>
34#include <utility>
35
36
37
38namespace steam {
39namespace engine {
40
41 using std::pair;
42 using std::vector;
43
44
57 struct BuffTable
58 {
59 using PHa = BuffHandle *;
61
63 { };
64
65 template<uint count>
66 struct Storage
67 {
68 enum{size = count * sizeof(StorageChunk)};
69 };
70
71 class Builder
72 {
73 public:
74 Builder& announce (uint count, BuffDescr const& type);
76 };
77
78 static Builder& prepare (const size_t STORAGE_SIZE, void* storage);
79
80 void lockBuffers();
81 void releaseBuffers();
82
83 using BuffHandleTable = vector<BuffHandle>;
85
89 };
90
91
92
93
94 /* === Implementation === */
95
96 inline BuffTable::Builder&
97 BuffTable::prepare (const size_t STORAGE_SIZE, void* storage)
98 {
99 UNIMPLEMENTED ("expose a builder object for outfitting a buffer pointer table");
100 }
101
102
103 inline BuffTable::Builder&
105 {
106 UNIMPLEMENTED ("accept announcement of additional buffer table entries required");
107 }
108
109
110 inline BuffTable&
112 {
113 UNIMPLEMENTED ("finally drop off the newly configured buffer pointer table");
114 }
115
116
117 inline void
119 {
120 UNIMPLEMENTED ("convenience shortcut: lock all preconfigured buffers within this table through the underlying buffer provider");
121 }
122
123
124 inline void
126 {
127 UNIMPLEMENTED ("convenience shortcut: release all the buffers managed through this buffer table, by forwarding to the underlying buffer provider");
128 }
129
130
131
134 {
135 UNIMPLEMENTED ("expose an iterator to yield all prepared buffers within this buffer table");
136 }
137
138
141 {
142 UNIMPLEMENTED ("expose an iterator to access all the input buffer slots of this buffer table");
143 }
144
145
148 {
149 UNIMPLEMENTED ("expose an iterator to access all the output buffer slots of this buffer table");
150 }
151
152
153
154
155
156
157}} // namespace steam::engine
158#endif
A front-end to support the buffer management within the render nodes.
Accessing a STL element range through a Lumiera forward iterator, An instance of this iterator adapte...
placeholder type for the contents of a data buffer.
An opaque descriptor to identify the type and further properties of a data buffer.
Handle for a buffer for processing data, abstracting away the actual implementation.
Builder & announce(uint count, BuffDescr const &type)
Lumiera error handling (C++ interface).
unsigned int uint
Definition integral.hpp:29
Helper template(s) for creating Lumiera Forward Iterators.
Steam-Layer implementation namespace root.
Interface to the processing nodes and the Render Nodes network.
Tables of buffer handles and corresponding dereferenced buffer pointers.
Definition bufftable.hpp:58
vector< BuffHandle > BuffHandleTable
Definition bufftable.hpp:83
static Builder & prepare(const size_t STORAGE_SIZE, void *storage)
Definition bufftable.hpp:97