aboutsummaryrefslogtreecommitdiff
path: root/mlir/tools/mlir-tblgen/CppGenUtilities.cpp
blob: fddd7790a4375e92852587165064726851f13e31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//===- CppGenUtilities.cpp - MLIR cpp gen utilities --------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// Defines common utilities for generating cpp files from tablegen
// structures.
//
//===----------------------------------------------------------------------===//

#include "CppGenUtilities.h"
#include "mlir/Support/IndentedOstream.h"

void mlir::tblgen::emitSummaryAndDescComments(llvm::raw_ostream &os,
                                              llvm::StringRef summary,
                                              llvm::StringRef description,
                                              bool terminateComment) {

  std::string comments = "";
  StringRef trimmedSummary = summary.trim();
  StringRef trimmedDesc = description.trim();
  raw_indented_ostream ros(os);

  bool empty = true;
  if (!trimmedSummary.empty()) {
    ros.printReindented(trimmedSummary, "/// ");
    empty = false;
  }

  if (!trimmedDesc.empty()) {
    if (!empty) {
      // If there is a summary, add a newline after it.
      ros << "\n";
    }
    ros.printReindented(trimmedDesc, "/// ");
    empty = false;
  }

  if (!empty && terminateComment)
    ros << "\n";
}