#ifndef BASIC_PROTOTYPE_INFO_HPP #define BASIC_PROTOTYPE_INFO_HPP #include namespace matador::object { class schema_node; class basic_object_info { public: virtual ~basic_object_info() = default; [[nodiscard]] std::type_index type_index() const; protected: basic_object_info(schema_node &node, std::type_index type_index); protected: schema_node &node_; /**< prototype node of the represented object type */ std::type_index type_index_; /**< type index of the represented object type */ }; template class object_info final : public basic_object_info { public: explicit object_info(schema_node &node) : basic_object_info(node, typeid(Type)) {} }; namespace detail { struct null_type {}; } using null_info = object_info; } #endif //BASIC_PROTOTYPE_INFO_HPP