lamppp
Loading...
Searching...
No Matches
data_ptr.hpp
1#pragma once
2
3#include <functional>
4#include <iostream>
5#include <memory>
6
7namespace lmp::tensor::detail {
8
11
22struct DataPtr {
23 std::shared_ptr<void> ptr;
24
25 DataPtr() = default;
26 DataPtr(void* data_ptr, 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
Smart pointer wrapper for tensor data with custom deleter support.
Definition data_ptr.hpp:22