5#include <unordered_set>
7#include <nlohmann/json.hpp>
26 return std::hash<std::string>()(f.
name_);
53 return std::hash<std::string>()(c.
name_);
57using ClassesList = std::unordered_set<class_definition, class_definition_hash>;
77 sources_.push_back(std::move(json_path));
80 const std::vector<std::string> &
sources()
const
106 const std::string &
name()
const
113 functions_.insert(func);
118 submodules_.insert(mod);
123 overloads_.push_back(ast);
128 classes_.insert(cls);
138 key.name_ = class_name;
139 auto it = classes_.find(
key);
141 if (it != classes_.end())
154 key.name_ = func_name;
155 auto it = functions_.find(
key);
157 if (it != functions_.end())
185 mentions_dunder_all_ =
true;
192 return !mentions_dunder_all_ &&
name.rfind(
'_', 0) != 0;
201 std::vector<std::string> sources_;
202 bool hydrated_ =
false;
203 bool readable_ =
true;
204 bool mentions_dunder_all_ =
false;
const SubmodulesList & submodules() const
Definition module.h:168
const std::string & name() const
Definition module.h:106
void mark_hydrated()
Definition module.h:90
void add_submodule(const std::shared_ptr< module > mod)
Definition module.h:116
void add_overload(const nlohmann::json &ast)
Definition module.h:121
bool readable() const
False once hydration has run and every source failed to parse.
Definition module.h:96
class_definition get_class(const std::string &class_name) const
Retrieve a class definition by name.
Definition module.h:135
function get_function(const std::string &func_name) const
Retrieve a function definition by name.
Definition module.h:151
const std::vector< std::string > & sources() const
Definition module.h:80
const ClassesList & classes() const
Definition module.h:178
const FunctionsList & functions() const
Definition module.h:163
bool star_import_binds(const std::string &name) const
Whether from <this module> import * binds name: a public name, and no mention of __all__,...
Definition module.h:190
module(const std::string &name)
Definition module.h:62
void set_mentions_dunder_all()
Definition module.h:183
bool hydrated() const
Definition module.h:85
void add_class(const class_definition &cls)
Definition module.h:126
void add_function(const function &func)
Definition module.h:111
void add_source(std::string json_path)
Record a JSON AST this module's contents come from.
Definition module.h:75
void set_readable(bool yes)
Definition module.h:101
const OverloadList & overloads() const
Definition module.h:173
@ other
Definition converter_compare.cpp:887
std::vector< nlohmann::json > OverloadList
Definition module.h:35
std::unordered_set< class_definition, class_definition_hash > ClassesList
Definition module.h:57
std::unordered_set< std::shared_ptr< module > > SubmodulesList
Definition module.h:33
std::unordered_set< function, function_hash > FunctionsList
Definition module.h:30
uint256_t key
Definition solidity_mapping.c:1
std::size_t operator()(const class_definition &c) const
Definition module.h:51
std::string name_
Definition module.h:39
std::vector< std::string > bases_
Definition module.h:40
bool operator==(const class_definition &other) const
Definition module.h:43
std::vector< std::string > methods_
Definition module.h:41
std::size_t operator()(const function &f) const
Definition module.h:24
bool operator==(const function &other) const
Definition module.h:16
std::string name_
Definition module.h:13
std::string return_type_
Definition module.h:14