Home
libucxx
libucxx
ucxx
nightly (0.53)
nightly (0.53)
stable (0.52)
legacy (0.51)
Toggle main menu visibility
Loading...
Searching...
No Matches
include
ucxx
buffer.h
1
5
#pragma once
6
7
#include <memory>
8
9
#include <ucxx/log.h>
10
11
namespace
ucxx
{
17
enum class
BufferType
{
18
Host = 0,
19
CCCL,
20
Invalid,
21
};
22
31
class
Buffer
{
32
protected
:
33
BufferType
_bufferType
{BufferType::Invalid};
34
size_t
_size
;
35
45
Buffer
(
const
BufferType
bufferType,
const
size_t
size);
46
47
public
:
48
Buffer
() =
delete
;
49
Buffer
(
const
Buffer
&) =
delete
;
50
Buffer
& operator=(
Buffer
const
&) =
delete
;
51
Buffer
(
Buffer
&& o) =
delete
;
52
Buffer
& operator=(
Buffer
&& o) =
delete
;
53
59
virtual
~Buffer
();
60
69
[[nodiscard]]
BufferType
getType
() const noexcept;
70
78
[[nodiscard]]
size_t
getSize
() const noexcept;
79
89
[[nodiscard]] virtual
void
*
data
() = 0;
90
};
91
97
class HostBuffer : public
Buffer
{
98
private
:
99
void
* _buffer;
100
101
public
:
102
HostBuffer() =
delete
;
103
HostBuffer(
const
HostBuffer&) =
delete
;
104
HostBuffer& operator=(HostBuffer
const
&) =
delete
;
105
HostBuffer(HostBuffer&& o) =
delete
;
106
HostBuffer& operator=(HostBuffer&& o) =
delete
;
107
121
explicit
HostBuffer
(
const
size_t
size);
122
133
HostBuffer
(
const
void
* buffer,
const
size_t
size);
134
141
~HostBuffer
();
142
168
[[nodiscard]]
void
*
release
();
169
189
[[nodiscard]]
void
*
data
()
override
;
190
};
191
192
#if UCXX_ENABLE_CCCL
197
struct
CCCLBufferImpl;
198
204
class
CCCLBuffer :
public
Buffer
{
205
private
:
206
std::unique_ptr<CCCLBufferImpl> _impl;
207
208
public
:
209
CCCLBuffer() =
delete
;
210
CCCLBuffer(
const
CCCLBuffer&) =
delete
;
211
CCCLBuffer& operator=(CCCLBuffer
const
&) =
delete
;
212
CCCLBuffer(CCCLBuffer&& o) =
delete
;
213
CCCLBuffer& operator=(CCCLBuffer&& o) =
delete
;
214
215
~CCCLBuffer()
override
;
216
231
explicit
CCCLBuffer(
const
size_t
size);
232
248
[[nodiscard]]
void
* data()
override
;
249
};
250
#endif
251
263
[[nodiscard]] std::shared_ptr<Buffer>
allocateBuffer
(
BufferType
bufferType,
const
size_t
size);
264
265
}
// namespace ucxx
ucxx::Buffer
A simple object to simplify managing buffers.
Definition
buffer.h:31
ucxx::Buffer::Buffer
Buffer(const BufferType bufferType, const size_t size)
Protected constructor of abstract type Buffer.
ucxx::Buffer::~Buffer
virtual ~Buffer()
Virtual destructor.
ucxx::Buffer::_bufferType
BufferType _bufferType
Buffer type.
Definition
buffer.h:33
ucxx::Buffer::getSize
size_t getSize() const noexcept
Get the size of the contained buffer.
ucxx::Buffer::data
virtual void * data()=0
Abstract method returning void pointer to buffer.
ucxx::Buffer::getType
BufferType getType() const noexcept
Get the type of buffer the object holds.
ucxx::Buffer::_size
size_t _size
Buffer size.
Definition
buffer.h:34
ucxx::HostBuffer::~HostBuffer
~HostBuffer()
Destructor of concrete type HostBuffer.
ucxx::HostBuffer::HostBuffer
HostBuffer(const void *buffer, const size_t size)
Construct a host buffer by deep copying the contents of another buffer.
ucxx::HostBuffer::HostBuffer
HostBuffer(const size_t size)
Constructor of concrete type HostBuffer.
ucxx::HostBuffer::release
void * release()
Release the allocated host buffer to the caller.
ucxx::HostBuffer::data
void * data() override
Get a pointer to the allocated raw host buffer.
ucxx
Definition
address.h:16
ucxx::allocateBuffer
std::shared_ptr< Buffer > allocateBuffer(BufferType bufferType, const size_t size)
Allocate a buffer of specified type and size.
ucxx::BufferType
BufferType
The type of a buffer.
Definition
buffer.h:17
Generated by
1.18.0