9 #include <hilti/ast/declaration.h> 10 #include <hilti/ast/declarations/property.h> 11 #include <hilti/ast/id.h> 12 #include <hilti/ast/node.h> 13 #include <hilti/ast/statement.h> 14 #include <hilti/ast/statements/block.h> 15 #include <hilti/ast/statements/expression.h> 16 #include <hilti/base/util.h> 28 Module(
ID id, std::vector<Declaration> decls, std::vector<Statement> stmts,
const Meta& m =
Meta())
33 const auto& id()
const {
return child<ID>(0); }
34 const auto& statements()
const {
return child<statement::Block>(1); }
35 auto declarations()
const {
return childsOfType<Declaration>(); }
36 auto declarationRefs()
const {
return childRefsOfType<Declaration>(); }
38 bool isEmpty()
const {
40 return childs().size() <= 2 && statements().statements().empty();
111 _preserved.push_back(n);
112 return NodeRef(_preserved.back());
122 std::vector<Node> _preserved;
Definition: declaration.h:53
Definition: expression.h:14
void add(Expression e)
Definition: module.h:98
void addChild(Node n)
Definition: node.h:459
void clear()
Definition: module.cc:9
auto properties() const
Definition: module.h:119
Definition: optional-ref.h:22
void add(Statement s)
Definition: module.h:86
void add(Declaration n)
Definition: module.h:74
NodeRef preserve(const Node &n)
Definition: module.h:110
std::map< std::string, node::detail::PropertyValue > Properties
Definition: node.h:99
hilti::node::Set< declaration::Property > moduleProperties(const std::optional< ID > &id) const
Definition: module.cc:35
void destroyPreservedNodes()
Definition: module.cc:46
Definition: node-ref.h:44
const auto & childs() const
Definition: node.h:470
hilti::optional_ref< const declaration::Property > moduleProperty(const ID &id) const
Definition: module.cc:22