lamppp
Loading...
Searching...
No Matches
csrc
include
lamppp
tensor
data_ptr.hpp
1
#pragma once
2
3
#include <functional>
4
#include <iostream>
5
#include <memory>
6
7
namespace
lmp::tensor::detail {
8
11
22
struct
DataPtr
{
23
std::shared_ptr<void> ptr;
24
25
DataPtr
() =
default
;
26
DataPtr
(
void
* data_ptr,
const
std::function<
void
(
void
*)>& dealloc)
27
: ptr(data_ptr, [dealloc](
void
* data) {
28
try
{
29
dealloc(data);
30
}
catch
(
const
std::exception& e) {
31
std::cerr <<
"DataPtr deleter error: "
<< e.what() <<
"\n"
;
32
}
catch
(...) {
33
std::cerr <<
"DataPtr deleter threw non-std::exception\n"
;
34
}
35
}) {}
36
37
void
* data()
const
{
return
ptr.get(); }
38
};
40
41
}
// namespace lmp::tensor::detail
lmp::tensor::detail::DataPtr
Smart pointer wrapper for tensor data with custom deleter support.
Definition
data_ptr.hpp:22
Generated by
1.9.8