ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
module_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include <filesystem>
4#include <memory>
5#include <string>
6#include <unordered_set>
7
8class module;
9
10using ModulePtr = std::shared_ptr<module>;
11using ModulesList = std::unordered_set<ModulePtr>;
12
13class module_manager
14{
15public:
17
18 static std::shared_ptr<module_manager> create(
19 const std::string &module_search_path,
20 const std::string &main_module_path);
21
24 const ModulePtr get_module(const std::string &module_name);
25
26private:
27 module_manager(const std::string &path);
28 void load();
29
31 const ModulePtr find_module(const std::string &module_name) const;
32
36 bool hydrate(const ModulePtr &mod);
37
38 void load_directory(
39 const std::filesystem::path &current_path,
40 ModulePtr parent_module = nullptr);
41
42 ModulePtr get_module_from_dir(
43 const std::filesystem::path &path,
44 ModulePtr parent_module);
45
46 std::string module_search_path_;
47 std::string main_module_;
48 ModulesList modules_;
49
53 unsigned discovered_ = 0;
54 unsigned parsed_ = 0;
55};
~module_manager()
Definition module_manager.cpp:430
const ModulePtr get_module(const std::string &module_name)
Look a module up by (possibly dotted) name, parsing its JSON AST if this is the first request for it.
Definition module_manager.cpp:439
static std::shared_ptr< module_manager > create(const std::string &module_search_path, const std::string &main_module_path)
Definition module_manager.cpp:343
Definition module.h:60
std::shared_ptr< module > ModulePtr
Definition module_manager.h:10
std::unordered_set< ModulePtr > ModulesList
Definition module_manager.h:11
Definition path.py:1