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 {.value = Separator::After, .name =
"after"},
18 {.value = Separator::BeforeAndAfter, .name =
"before-and-after"},
19 {.value = Separator::Before, .name =
"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:364
const auto & meta() const
Definition: node.h:306
virtual node::Properties properties() const
Definition: node.h:891
Definition: statement.h:15