/* **************************************************************************** */ /* */ /* ::: :::::::: */ /* NonOwningPtr.inl :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/27 21:04:00 by maldavid #+# #+# */ /* Updated: 2024/03/27 21:04:00 by maldavid ### ########.fr */ /* */ /* **************************************************************************** */ #include namespace mlx { template NonOwningPtr::NonOwningPtr(T* ptr) : p_ptr(ptr) {} template NonOwningPtr::NonOwningPtr(NonOwningPtr&& ptr) noexcept : p_ptr(ptr.p_ptr) { ptr.p_ptr = nullptr; } template NonOwningPtr& NonOwningPtr::operator=(T* ptr) { p_ptr = ptr; } template NonOwningPtr& NonOwningPtr::operator=(NonOwningPtr&& ptr) noexcept { p_ptr = ptr.p_ptr; ptr.p_ptr = nullptr; } template NonOwningPtr::operator bool() const noexcept { return p_ptr != nullptr; } template T* NonOwningPtr::Get() const noexcept { return p_ptr; } template T* NonOwningPtr::operator->() const noexcept { return p_ptr; } template T& NonOwningPtr::operator*() const noexcept { return *p_ptr; } }