IDS peak genericC++ v1.17.0
Loading...
Searching...
No Matches
peak_buffer_chunk.hpp
Go to the documentation of this file.
1
7
8#pragma once
9
11
13#include <peak/dll_interface/peak_dll_interface_util.hpp>
14
15#include <cstddef>
16#include <cstdint>
17#include <memory>
18
19
20namespace peak
21{
22namespace core
23{
24
25class Buffer;
26
35{
36public:
37 BufferChunk() = delete;
39 BufferChunk(const BufferChunk& other) = delete;
40 BufferChunk& operator=(const BufferChunk& other) = delete;
41 BufferChunk(BufferChunk&& other) = delete;
42 BufferChunk& operator=(BufferChunk&& other) = delete;
43
53 PEAK_COMMON_NO_DISCARD uint64_t ID() const;
54
64 PEAK_COMMON_NO_DISCARD void* BasePtr() const;
65
75 PEAK_COMMON_NO_DISCARD size_t Size() const;
76
86 PEAK_COMMON_NO_DISCARD std::shared_ptr<Buffer> ParentBuffer() const;
87
88private:
89 friend ClassCreator<BufferChunk>;
90 BufferChunk(PEAK_BUFFER_CHUNK_HANDLE bufferChunkHandle, const std::weak_ptr<Buffer>& parentBuffer);
91 PEAK_BUFFER_CHUNK_HANDLE m_backendHandle;
92
93 std::weak_ptr<Buffer> m_parentBuffer;
94};
95
96} /* namespace core */
97} /* namespace peak */
98
99/* Implementation */
100namespace peak
101{
102namespace core
103{
104
106 PEAK_BUFFER_CHUNK_HANDLE bufferChunkHandle, const std::weak_ptr<Buffer>& parentBuffer)
107 : m_backendHandle(bufferChunkHandle)
108 , m_parentBuffer(parentBuffer)
109{}
110
112{
113 (void)PEAK_C_ABI_PREFIX PEAK_BufferChunk_Destruct(m_backendHandle);
114}
115
116inline uint64_t BufferChunk::ID() const
117{
118 return QueryNumericFromCInterfaceFunction<uint64_t>(
119 [&](uint64_t* id) { return PEAK_C_ABI_PREFIX PEAK_BufferChunk_GetID(m_backendHandle, id); });
120}
121
122inline void* BufferChunk::BasePtr() const
123{
124 return QueryNumericFromCInterfaceFunction<void*>(
125 [&](void** basePtr) { return PEAK_C_ABI_PREFIX PEAK_BufferChunk_GetBasePtr(m_backendHandle, basePtr); });
126}
127
128inline size_t BufferChunk::Size() const
129{
130 return QueryNumericFromCInterfaceFunction<size_t>(
131 [&](size_t* size) { return PEAK_C_ABI_PREFIX PEAK_BufferChunk_GetSize(m_backendHandle, size); });
132}
133
134inline std::shared_ptr<Buffer> BufferChunk::ParentBuffer() const
135{
136 return LockOrThrow(m_parentBuffer);
137}
138
139} /* namespace core */
140} /* namespace peak */
PEAK_COMMON_NO_DISCARD std::shared_ptr< Buffer > ParentBuffer() const
Returns the parent buffer.
Definition peak_buffer_chunk.hpp:134
BufferChunk(BufferChunk &&other)=delete
~BufferChunk()
Definition peak_buffer_chunk.hpp:111
PEAK_COMMON_NO_DISCARD uint64_t ID() const
Returns the ID.
Definition peak_buffer_chunk.hpp:116
PEAK_COMMON_NO_DISCARD void * BasePtr() const
Returns the base pointer.
Definition peak_buffer_chunk.hpp:122
BufferChunk & operator=(BufferChunk &&other)=delete
PEAK_COMMON_NO_DISCARD size_t Size() const
Returns the size.
Definition peak_buffer_chunk.hpp:128
BufferChunk & operator=(const BufferChunk &other)=delete
BufferChunk(const BufferChunk &other)=delete
Represents a GenTL buffer module.
Definition peak_buffer.hpp:85
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:32
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_buffer.hpp:29
struct PEAK_BUFFER_CHUNK * PEAK_BUFFER_CHUNK_HANDLE
Definition peak_backend.h:407
PEAK_C_API PEAK_BufferChunk_GetID(PEAK_BUFFER_CHUNK_HANDLE bufferChunkHandle, uint64_t *id)
Asks the given buffer chunk for its ID.
PEAK_C_API PEAK_BufferChunk_GetBasePtr(PEAK_BUFFER_CHUNK_HANDLE bufferChunkHandle, void **basePtr)
Asks the given buffer chunk for its base pointer.
PEAK_C_API PEAK_BufferChunk_GetSize(PEAK_BUFFER_CHUNK_HANDLE bufferChunkHandle, size_t *size)
Asks the given buffer chunk for its size.
PEAK_C_API PEAK_BufferChunk_Destruct(PEAK_BUFFER_CHUNK_HANDLE bufferChunkHandle)
Destroys the given buffer chunk.
#define PEAK_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13