#pragma once #include "MacrosCodegen.hpp" #include "MetadataBase.hpp" namespace Metadata { struct TypeInfoList { struct Sentinel { }; struct Iterator { void* data; const TypeInfo& operator*() const; Iterator& operator++(); Iterator operator++(int); bool operator==(const Iterator&) const; bool operator==(const Sentinel&) const; }; Iterator begin() const; Sentinel end() const; }; /// Get a list of all type infos present. const TypeInfoList& GetTypeInfoList(); const TypeInfo* QueryTypeInfo(TypeId id); const TypeInfo* QueryTypeInfo(std::string_view name); } // namespace Metadata