summaryrefslogtreecommitdiffhomepage
path: root/src/critter-script.inl
blob: db6b70007650d50aab3a8c46a69c7fef20819961 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once
#include "critter-script.hpp"
#include "compat/assert.hpp"

namespace floormat {

template <typename T> script_wrapper<T>::script_wrapper(T* ptr): ptr{ptr} { fm_assert(ptr); }

template <typename T>
script_wrapper<T>::~script_wrapper() noexcept
{
    ptr->delete_self();
#ifndef FM_NO_DEBUG
    ptr = nullptr;
#endif
}

template <typename T> const T& script_wrapper<T>::operator*() const noexcept { return *ptr; }
template <typename T> T& script_wrapper<T>::operator*() noexcept { return *ptr; }
template <typename T> const T* script_wrapper<T>::operator->() const noexcept { return ptr; }
template <typename T> T* script_wrapper<T>::operator->() noexcept { return ptr; }

} // namespace floormat