// // property.h // reflection // // Created by Sam Jaffe on 2/20/23. // Copyright © 2023 Sam Jaffe. All rights reserved. // #pragma once #include #include #include #include "reflection/forward.h" namespace reflection { class Property { private: std::string context_; std::string type_name_; std::vector path_; public: explicit Property(std::string const &context = "") : context_(context) {} template > Property(std::string const &context, std::string const & type_name, C const & path) : context_(context), type_name_(type_name), path_(path.begin(), path.end()) {} template > Property(std::string const & type_name, C const & path) : Property("", type_name, path) {} std::string_view context() const { return context_; } std::string_view type_name() const { return type_name_; } auto begin() const { return path_.begin(); } auto end() const { return path_.end(); } }; }