16#ifndef ITSTRACKINGGPU_UNIQUEPOINTER_H_
17#define ITSTRACKINGGPU_UNIQUEPOINTER_H_
31struct UniquePointerTraits final {
32 typedef T* InternalPointer;
34 GPUhd() static constexpr T& getReference(const InternalPointer& internalPointer) noexcept
36 return const_cast<T&
>(*internalPointer);
39 GPUhd() static constexpr T* getPointer(const InternalPointer& internalPointer) noexcept
41 return const_cast<T*
>(internalPointer);
49 typedef UniquePointerTraits<T> PointerTraits;
64 GPUhd() T& operator*() noexcept;
65 GPUhd() const T& operator*() const noexcept;
71 typename PointerTraits::InternalPointer mDevicePointer;
85 utils::host::gpuMalloc(
reinterpret_cast<void**
>(&mDevicePointer),
sizeof(T));
86 utils::host::gpuMemcpyHostToDevice(mDevicePointer, &
ref,
sizeof(T));
111 mDevicePointer =
other.mDevicePointer;
112 other.mDevicePointer =
nullptr;
120 if (mDevicePointer !=
nullptr) {
122 utils::host::gpuFree(mDevicePointer);
129 return PointerTraits::getPointer(mDevicePointer);
133GPUhd() const T* UniquePointer<T>::
get() const noexcept
135 return PointerTraits::getPointer(mDevicePointer);
139GPUhd() T& UniquePointer<T>::operator*() noexcept
141 return PointerTraits::getReference(mDevicePointer);
145GPUhd() const T& UniquePointer<T>::operator*() const noexcept
147 return PointerTraits::getReference(mDevicePointer);
UniquePointer(UniquePointer &&)
GPUhd() T *get() noexcept
UniquePointer & operator=(UniquePointer &&)
UniquePointer(const UniquePointer &)=delete
UniquePointer & operator=(const UniquePointer &)=delete
GPUhd() T *getPtrFromRuler(int index
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
VectorOfTObjectPtrs other