8 #include <hilti/ast/statement.h>
10 namespace hilti::statement {
13 enum class Separator { After, BeforeAndAfter, Before };
16 constexpr util::enum_::Value<Separator> Conventions[] = {
17 {Separator::After,
"after"},
18 {Separator::BeforeAndAfter,
"before-and-after"},
19 {Separator::Before,
"before"},
23 constexpr
auto to_string(Separator cc) {
return util::enum_::to_string(cc, detail::Conventions); }
30 const auto& comment()
const {
return _comment; }
31 auto separator()
const {
return _separator; }
34 auto p = node::Properties{{
"comment", _comment}, {
"separator", to_string(_separator)}};
38 static auto create(
ASTContext* ctx, std::string comment, comment::Separator separator = comment::Separator::Before,
40 return ctx->
make<Comment>(ctx, {}, std::move(comment), separator, std::move(
meta));
44 Comment(ASTContext* ctx, Nodes
children, std::string comment, comment::Separator separator, Meta
meta)
45 : Statement(ctx, NodeTags, std::move(
children), std::move(
meta)),
46 _comment(std::move(comment)),
47 _separator(separator) {}
49 HILTI_NODE_1(statement::Comment, Statement,
final);
53 comment::Separator _separator;
Definition: ast-context.h:121
T * make(Args &&... args)
Definition: ast-context.h:366
const auto & children() const
Definition: node.h:363
const auto & meta() const
Definition: node.h:305
virtual node::Properties properties() const
Definition: node.h:866
Definition: statement.h:15