Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
Blob.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <cstddef>
11#include <functional>
12#include <iostream>
13#include <string>
14
15#include "open3d/core/Device.h"
17
18namespace open3d {
19namespace core {
20
38class Blob {
39public:
44 Blob(int64_t byte_size, const Device& device)
45 : deleter_(nullptr),
46 data_ptr_(MemoryManager::Malloc(byte_size, device)),
47 device_(device) {}
48
56 Blob(const Device& device,
57 void* data_ptr,
58 const std::function<void(void*)>& deleter)
59 : deleter_(deleter), data_ptr_(data_ptr), device_(device) {}
60
62 if (deleter_) {
63 // Our custom deleter's void* argument is not used. The deleter
64 // function itself shall handle destruction without the argument.
65 // The void(void*) signature is kept to be consistent with DLPack's
66 // deleter.
67 deleter_(nullptr);
68 } else {
70 }
71 };
72
73 Device GetDevice() const { return device_; }
74
75 void* GetDataPtr() { return data_ptr_; }
76
77 const void* GetDataPtr() const { return data_ptr_; }
78
79protected:
81 std::function<void(void*)> deleter_ = nullptr;
82
84 void* data_ptr_ = nullptr;
85
88};
89
90} // namespace core
91} // namespace open3d
Definition Blob.h:38
const void * GetDataPtr() const
Definition Blob.h:77
std::function< void(void *)> deleter_
For externally managed memory, deleter != nullptr.
Definition Blob.h:81
Device device_
Device context for the blob.
Definition Blob.h:87
void * data_ptr_
Device data pointer.
Definition Blob.h:84
Device GetDevice() const
Definition Blob.h:73
Blob(const Device &device, void *data_ptr, const std::function< void(void *)> &deleter)
Definition Blob.h:56
Blob(int64_t byte_size, const Device &device)
Definition Blob.h:44
void * GetDataPtr()
Definition Blob.h:75
~Blob()
Definition Blob.h:61
Definition Device.h:18
Definition MemoryManager.h:34
static void Free(void *ptr, const Device &device)
Frees previously allocated memory at address ptr on device device.
Definition MemoryManager.cpp:28
Definition PinholeCameraIntrinsic.cpp:16