summaryrefslogtreecommitdiffhomepage
path: root/entity/metadata.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'entity/metadata.hpp')
-rw-r--r--entity/metadata.hpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/entity/metadata.hpp b/entity/metadata.hpp
index 1902091f..dd82ce8a 100644
--- a/entity/metadata.hpp
+++ b/entity/metadata.hpp
@@ -17,7 +17,11 @@
namespace floormat::entities {
-template<typename T> struct entity_accessors;
+struct inspect_intent_t {};
+struct serialize_intent_t {};
+struct report_intent_t {};
+
+template<typename T, typename Intent> struct entity_accessors;
} // namespace floormat::entities
@@ -248,7 +252,7 @@ constexpr bool find_in_tuple(F&& fun, Tuple&& tuple)
namespace floormat {
-template<typename T>
+template<typename T, typename Intent>
class entity_metadata final {
static_assert(std::is_same_v<T, std::decay_t<T>>);
@@ -257,14 +261,14 @@ class entity_metadata final {
public:
static constexpr StringView class_name = name_of<T>;
- static constexpr auto accessors = entities::entity_accessors<T>::accessors();
+ static constexpr auto accessors = entities::entity_accessors<T, Intent>::accessors();
static constexpr size_t size = std::tuple_size_v<std::decay_t<decltype(accessors)>>;
static constexpr auto erased_accessors = erased_helper(accessors, std::make_index_sequence<size>{});
};
-template<typename T>
+template<typename T, typename Intent>
template<typename Tuple, std::size_t... Ns>
-consteval auto entity_metadata<T>::erased_helper(const Tuple& tuple, std::index_sequence<Ns...>)
+consteval auto entity_metadata<T, Intent>::erased_helper(const Tuple& tuple, std::index_sequence<Ns...>)
{
std::array<entities::erased_accessor, sizeof...(Ns)> array { std::get<Ns>(tuple).erased()..., };
return array;