summaryrefslogtreecommitdiffhomepage
path: root/src/script.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script.hpp')
-rw-r--r--src/script.hpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/script.hpp b/src/script.hpp
index b67553ec..755a40df 100644
--- a/src/script.hpp
+++ b/src/script.hpp
@@ -13,10 +13,12 @@ struct base_script
fm_DECLARE_DELETED_COPY_ASSIGNMENT(base_script);
fm_DECLARE_DELETED_MOVE_ASSIGNMENT(base_script);
- base_script() noexcept;
+ constexpr base_script() noexcept = default;
virtual ~base_script() noexcept;
+ virtual const void* type_id() const = 0;
static StringView state_name(script_lifecycle x);
+ static void _assert_state(script_lifecycle old_state, script_lifecycle s, const char* file, int line);
};
template<typename S, typename Obj>
@@ -24,7 +26,6 @@ class Script final
{
S* ptr;
script_lifecycle _state;
- void _assert_state(script_lifecycle s, const char* file, int line);
static S* make_empty();
public:
@@ -51,6 +52,7 @@ public:
void do_create(S* ptr);
void do_initialize(const std::shared_ptr<Obj>& obj);
void do_reassign(S* ptr, const std::shared_ptr<Obj>& obj);
+ void do_clear(const std::shared_ptr<Obj>& obj);
void do_destroy_pre(const std::shared_ptr<Obj>& obj, script_destroy_reason r);
void do_finish_destroy();
void do_ensure_torn_down();