AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
raw_registry.h
1#ifndef PLUGINS_RAW_REGISTRY_H
2#define PLUGINS_RAW_REGISTRY_H
3
4#include "registry_types.h"
5
6#include <typeindex>
7#include <vector>
8
9namespace downward::cli::plugins {
10class RawRegistry {
11 std::vector<const CategoryPlugin*> category_plugins;
12 std::vector<const SubcategoryPlugin*> subcategory_plugins;
13 std::vector<const EnumPlugin*> enum_plugins;
14 std::vector<const Plugin*> plugins;
15
16 FeatureTypes collect_types(std::vector<std::string>& errors) const;
17 void validate_category_names(std::vector<std::string>& errors) const;
18 SubcategoryPlugins
19 collect_subcategory_plugins(std::vector<std::string>& errors) const;
20 Features collect_features(
21 const SubcategoryPlugins& subcategory_plugins,
22 std::vector<std::string>& errors) const;
23
24public:
25 void insert_category_plugin(const CategoryPlugin& category_plugin);
26 void insert_subcategory_plugin(const SubcategoryPlugin& subcategory_plugin);
27 void insert_enum_plugin(const EnumPlugin& enum_plugin);
28 void insert_plugin(const Plugin& plugin);
29
30 Registry construct_registry() const;
31
32 static RawRegistry* instance()
33 {
34 static RawRegistry instance_;
35 return &instance_;
36 }
37};
38} // namespace downward::cli::plugins
39
40#endif