diff options
Diffstat (limited to 'src/script.hpp')
-rw-r--r-- | src/script.hpp | 6 |
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(); |