mirror of https://github.com/JDAI-CV/fast-reid.git
41 lines
1.0 KiB
C++
41 lines
1.0 KiB
C++
#pragma once
|
|
|
|
template <typename T>
|
|
class TensorRTHolder {
|
|
T* holder;
|
|
public:
|
|
explicit TensorRTHolder(T* holder_) : holder(holder_) {}
|
|
~TensorRTHolder() {
|
|
if (holder)
|
|
holder->destroy();
|
|
}
|
|
TensorRTHolder(const TensorRTHolder&) = delete;
|
|
TensorRTHolder& operator=(const TensorRTHolder&) = delete;
|
|
TensorRTHolder(TensorRTHolder && rhs) noexcept{
|
|
holder = rhs.holder;
|
|
rhs.holder = nullptr;
|
|
}
|
|
TensorRTHolder& operator=(TensorRTHolder&& rhs) noexcept {
|
|
if (this == &rhs) {
|
|
return *this;
|
|
}
|
|
if (holder) holder->destroy();
|
|
holder = rhs.holder;
|
|
rhs.holder = nullptr;
|
|
return *this;
|
|
}
|
|
T* operator->() {
|
|
return holder;
|
|
}
|
|
T* get() { return holder; }
|
|
explicit operator bool() { return holder != nullptr; }
|
|
T& operator*() noexcept { return *holder; }
|
|
};
|
|
|
|
template <typename T>
|
|
TensorRTHolder<T> make_holder(T* holder) {
|
|
return TensorRTHolder<T>(holder);
|
|
}
|
|
|
|
template <typename T>
|
|
using TensorRTNonHolder = T*; |