Coverage Report

Created: 2018-07-19 20:53

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/Basic/MacroBuilder.h
Line
Count
Source
1
//===--- MacroBuilder.h - CPP Macro building utility ------------*- 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
/// \file
11
/// Defines the clang::MacroBuilder utility class.
12
///
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CLANG_BASIC_MACROBUILDER_H
16
#define LLVM_CLANG_BASIC_MACROBUILDER_H
17
18
#include "clang/Basic/LLVM.h"
19
#include "llvm/ADT/Twine.h"
20
#include "llvm/Support/raw_ostream.h"
21
22
namespace clang {
23
24
class MacroBuilder {
25
  raw_ostream &Out;
26
public:
27
38.7k
  MacroBuilder(raw_ostream &Output) : Out(Output) {}
28
29
  /// Append a \#define line for macro of the form "\#define Name Value\n".
30
14.5M
  void defineMacro(const Twine &Name, const Twine &Value = "1") {
31
14.5M
    Out << "#define " << Name << ' ' << Value << '\n';
32
14.5M
  }
33
34
  /// Append a \#undef line for Name.  Name should be of the form XXX
35
  /// and we emit "\#undef XXX".
36
60
  void undefineMacro(const Twine &Name) {
37
60
    Out << "#undef " << Name << '\n';
38
60
  }
39
40
  /// Directly append Str and a newline to the underlying buffer.
41
116k
  void append(const Twine &Str) {
42
116k
    Out << Str << '\n';
43
116k
  }
44
};
45
46
}  // end namespace clang
47
48
#endif