summaryrefslogtreecommitdiffhomepage
path: root/src/critter-script.inl
diff options
context:
space:
mode:
Diffstat (limited to 'src/critter-script.inl')
-rw-r--r--src/critter-script.inl23
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