diff options
Diffstat (limited to 'src/critter-script.inl')
-rw-r--r-- | src/critter-script.inl | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/critter-script.inl b/src/critter-script.inl new file mode 100644 index 00000000..db6b7000 --- /dev/null +++ b/src/critter-script.inl @@ -0,0 +1,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 |