libimgdoc2
Loading...
Searching...
No Matches
DataObjectImplementations.h
1// SPDX-FileCopyrightText: 2023 Carl Zeiss Microscopy GmbH
2//
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
7#include <cstring>
8#include "../IDataObj.h"
9
10namespace imgdoc2
11{
14 {
15 private:
16 std::uint8_t* buffer_{ nullptr };
17 size_t buffer_size_{ 0 };
18 public:
21 explicit DataObjectOnHeap(size_t size)
22 {
23 this->buffer_ = static_cast<std::uint8_t*>(malloc(size));
24 this->buffer_size_ = size;
25 }
26
28 void GetData(const void** p, size_t* s) const override
29 {
30 if (p != nullptr)
31 {
32 *p = this->buffer_;
33 }
34
35 if (s != nullptr)
36 {
37 *s = this->buffer_size_;
38 }
39 }
40
41 ~DataObjectOnHeap() override
42 {
43 free(this->buffer_);
44 }
45
46 public:
48 [[nodiscard]] const std::uint8_t* GetDataC() const { return this->buffer_; }
49
51 [[nodiscard]] std::uint8_t* GetData() { return this->buffer_; }
52
55 [[nodiscard]] size_t GetSizeOfData() const { return this->buffer_size_; }
56 public:
57 // no copy and no move
58 DataObjectOnHeap() = delete;
59 DataObjectOnHeap(const DataObjectOnHeap&) = delete; // copy constructor
60 DataObjectOnHeap& operator=(const DataObjectOnHeap&) = delete; // copy assignment
61 DataObjectOnHeap(DataObjectOnHeap&&) = delete; // move constructor
62 DataObjectOnHeap& operator=(DataObjectOnHeap&&) = delete; // move assignment
63 };
64}
An implementation of the IDataObjBase interface. This class allocates and owns memory on the heap.
Definition: DataObjectImplementations.h:14
const std::uint8_t * GetDataC() const
Gets a const pointer to the data. The size of this buffer is given by "GetSizeOfData".
Definition: DataObjectImplementations.h:48
void GetData(const void **p, size_t *s) const override
Definition: DataObjectImplementations.h:28
std::uint8_t * GetData()
Gets a pointer to the data. The size of this buffer is given by "GetSizeOfData".
Definition: DataObjectImplementations.h:51
DataObjectOnHeap(size_t size)
Definition: DataObjectImplementations.h:21
size_t GetSizeOfData() const
Definition: DataObjectImplementations.h:55
Definition: IDataObj.h:12