55
66namespace OpenVic {
77
8- template <typename ... _Context >
8+ template <typename ... Context >
99 class LoadBase {
1010 protected:
1111 LoadBase () = default ;
1212
13- virtual bool _fill_key_map (NodeTools::key_map_t &, _Context ...) = 0;
13+ virtual bool _fill_key_map (NodeTools::key_map_t &, Context ...) = 0;
1414
1515 public:
1616 LoadBase (LoadBase&&) = default ;
1717 virtual ~LoadBase () = default ;
1818
19- bool load (ast::NodeCPtr node, _Context ... context) {
19+ bool load (ast::NodeCPtr node, Context ... context) {
2020 NodeTools::key_map_t key_map;
2121 bool ret = _fill_key_map (key_map, context...);
2222 ret &= NodeTools::expect_dictionary_key_map (std::move (key_map))(node);
2323 return ret;
2424 }
2525
26- template <std::derived_from<LoadBase<_Context ...>> T, std::derived_from<T> U>
26+ template <std::derived_from<LoadBase<Context ...>> T, std::derived_from<T> U>
2727 static NodeTools::node_callback_t _expect_instance (
28- NodeTools::callback_t <std::unique_ptr<T>&&> callback, _Context ... context
28+ NodeTools::callback_t <std::unique_ptr<T>&&> callback, Context ... context
2929 ) {
3030 return [callback, &context...](ast::NodeCPtr node) -> bool {
3131 std::unique_ptr<T> instance { std::make_unique<U>() };
@@ -38,14 +38,14 @@ namespace OpenVic {
3838 OV_DETAIL_GET_TYPE_BASE_CLASS (LoadBase)
3939 };
4040
41- template <typename ... _Context >
42- class Named : public LoadBase <_Context ...> {
41+ template <typename ... Context >
42+ class Named : public LoadBase <Context ...> {
4343 std::string PROPERTY (name);
4444
4545 protected:
4646 Named () = default ;
4747
48- virtual bool _fill_key_map (NodeTools::key_map_t & key_map, _Context ...) override {
48+ virtual bool _fill_key_map (NodeTools::key_map_t & key_map, Context ...) override {
4949 using namespace OpenVic ::NodeTools;
5050 return add_key_map_entries (key_map, " name" , ONE_EXACTLY, expect_string (assign_variable_callback_string (name)));
5151 }
@@ -64,19 +64,21 @@ namespace OpenVic {
6464 OV_DETAIL_GET_TYPE
6565 };
6666
67- template <typename T, typename ... _Context>
68- requires std::derived_from<T, Named<_Context...>>
69- struct _get_name {
70- constexpr std::string_view operator ()(T const * item) const {
71- return item->get_name ();
67+ template <typename Value, typename ... Context>
68+ requires std::derived_from<Value, Named<Context...>>
69+ struct RegistryValueInfoNamed {
70+ using value_type = Value;
71+
72+ static constexpr std::string_view get_identifier (value_type const & item) {
73+ return item.get_name ();
7274 }
7375 };
7476
75- template <typename T , typename ... _Context >
76- requires std::derived_from<T , Named<_Context ...>>
77- using NamedRegistry = ValueRegistry<T, _get_name<T, _Context ...>>;
77+ template <typename Value , typename ... Context >
78+ requires std::derived_from<Value , Named<Context ...>>
79+ using NamedRegistry = ValueRegistry<RegistryValueInfoNamed<Value, Context ...>>;
7880
79- template <typename T , typename ... _Context >
80- requires std::derived_from<T , Named<_Context ...>>
81- using NamedInstanceRegistry = InstanceRegistry<T, _get_name<T, _Context ...>>;
81+ template <typename Value , typename ... Context >
82+ requires std::derived_from<Value , Named<Context ...>>
83+ using NamedInstanceRegistry = InstanceRegistry<RegistryValueInfoNamed<Value, Context ...>>;
8284}
0 commit comments