Line data Source code
1 : //===- TableGenBackend.cpp - Utilities for TableGen Backends ----*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 : //
10 : // This file provides useful services for TableGen backends...
11 : //
12 : //===----------------------------------------------------------------------===//
13 :
14 : #include "llvm/TableGen/TableGenBackend.h"
15 : #include "llvm/ADT/Twine.h"
16 : #include "llvm/Support/raw_ostream.h"
17 :
18 : using namespace llvm;
19 :
20 : const size_t MAX_LINE_LEN = 80U;
21 :
22 1967 : static void printLine(raw_ostream &OS, const Twine &Prefix, char Fill,
23 : StringRef Suffix) {
24 : size_t Pos = (size_t)OS.tell();
25 : assert((Prefix.str().size() + Suffix.size() <= MAX_LINE_LEN) &&
26 : "header line exceeds max limit");
27 : OS << Prefix;
28 116363 : for (size_t i = (size_t)OS.tell() - Pos, e = MAX_LINE_LEN - Suffix.size();
29 114396 : i < e; ++i)
30 : OS << Fill;
31 1967 : OS << Suffix << '\n';
32 1967 : }
33 :
34 281 : void llvm::emitSourceFileHeader(StringRef Desc, raw_ostream &OS) {
35 281 : printLine(OS, "/*===- TableGen'erated file ", '-', "*- C++ -*-===*\\");
36 : StringRef Prefix("|* ");
37 : StringRef Suffix(" *|");
38 281 : printLine(OS, Prefix, ' ', Suffix);
39 281 : size_t PSLen = Prefix.size() + Suffix.size();
40 : assert(PSLen < MAX_LINE_LEN);
41 : size_t Pos = 0U;
42 : do {
43 562 : size_t Length = std::min(Desc.size() - Pos, MAX_LINE_LEN - PSLen);
44 281 : printLine(OS, Prefix + Desc.substr(Pos, Length), ' ', Suffix);
45 281 : Pos += Length;
46 281 : } while (Pos < Desc.size());
47 281 : printLine(OS, Prefix, ' ', Suffix);
48 281 : printLine(OS, Prefix + "Automatically generated file, do not edit!", ' ',
49 : Suffix);
50 281 : printLine(OS, Prefix, ' ', Suffix);
51 281 : printLine(OS, "\\*===", '-', "===*/");
52 : OS << '\n';
53 281 : }
|