From bc197f2291ed9d0c862739f0bbaddfe69baedde2 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 15 Nov 2022 14:27:13 +0100 Subject: entity: random assorted nonsense --- src/entity.hpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/entity.hpp b/src/entity.hpp index 10f2a6e4..0c5e15ed 100644 --- a/src/entity.hpp +++ b/src/entity.hpp @@ -96,17 +96,22 @@ struct write_field { } // namespace detail +struct EntityBase {}; + template -struct Entity final { +struct Entity final : EntityBase { static_assert(std::is_same_v>); + struct type_base {}; + template - struct type final + struct type final : type_base { static_assert(std::is_same_v>); + struct field_base {}; template R, FieldWriter W> - struct field final + struct field final : field_base { using ObjectType = Obj; using FieldType = Type; @@ -231,11 +236,12 @@ enum class erased_field_type : std::uint32_t { string, u8, u16, u32, u64, s8, s16, s32, s64, user_type_start, - MAX = (std::uint32_t)-1, + MAX = (1u << 31) - 1u, + DYNAMIC = (std::uint32_t)-1, }; template struct type_of_erased_field; -template struct erased_field_type_v_ : std::integral_constant {}; +template struct erased_field_type_v_ : std::integral_constant {}; #define FM_ERASED_FIELD_TYPE(TYPE, ENUM) \ template<> struct erased_field_type_v_ : std::integral_constant {}; \ -- cgit v1.2.3