libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
bufferfactory.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <cstddef>
14#include <functional>
15#include <promeki/function.h>
16#include <promeki/namespace.h>
17#include <promeki/sharedptr.h>
18#include <promeki/bufferimpl.h>
19#include <promeki/memspace.h>
20
21PROMEKI_NAMESPACE_BEGIN
22
23class Buffer;
24
34using BufferImplPtr = SharedPtr<BufferImpl, false>;
35
53using BufferImplFactory =
54 Function<BufferImplPtr(const MemSpace &ms, size_t bytes, size_t align)>;
55
68void registerBufferImplFactory(MemSpace::ID id, BufferImplFactory factory);
69
78BufferImplPtr makeBufferImpl(const MemSpace &ms, size_t bytes, size_t align);
79
80// ---------------------------------------------------------------------------
81// Inter-MemSpace copy registry
82// ---------------------------------------------------------------------------
83
100using BufferCopyFn = Error (*)(const Buffer &src, Buffer &dst, size_t bytes, size_t srcOffset, size_t dstOffset);
101
113void registerBufferCopy(MemSpace::ID srcId, MemSpace::ID dstId, BufferCopyFn fn);
114
122BufferCopyFn lookupBufferCopy(MemSpace::ID srcId, MemSpace::ID dstId);
123
124PROMEKI_NAMESPACE_END
125
126#endif // PROMEKI_ENABLE_CORE