Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//==- HTMLRewrite.h - Translate source code into prettified HTML ---*- C++ -*-//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
//  This file defines a set of functions used for translating source code
10
//  into beautified HTML.
11
//
12
//===----------------------------------------------------------------------===//
13
 
14
#ifndef LLVM_CLANG_REWRITE_CORE_HTMLREWRITE_H
15
#define LLVM_CLANG_REWRITE_CORE_HTMLREWRITE_H
16
 
17
#include "clang/Basic/SourceLocation.h"
18
#include <string>
19
 
20
namespace clang {
21
 
22
class Rewriter;
23
class RewriteBuffer;
24
class Preprocessor;
25
 
26
namespace html {
27
 
28
  /// HighlightRange - Highlight a range in the source code with the specified
29
  /// start/end tags.  B/E must be in the same file.  This ensures that
30
  /// start/end tags are placed at the start/end of each line if the range is
31
  /// multiline.
32
  void HighlightRange(Rewriter &R, SourceLocation B, SourceLocation E,
33
                      const char *StartTag, const char *EndTag,
34
                      bool IsTokenRange = true);
35
 
36
  /// HighlightRange - Highlight a range in the source code with the specified
37
  /// start/end tags.  The Start/end of the range must be in the same file.
38
  /// This ensures that start/end tags are placed at the start/end of each line
39
  /// if the range is multiline.
40
  inline void HighlightRange(Rewriter &R, SourceRange Range,
41
                             const char *StartTag, const char *EndTag) {
42
    HighlightRange(R, Range.getBegin(), Range.getEnd(), StartTag, EndTag);
43
  }
44
 
45
  /// HighlightRange - This is the same as the above method, but takes
46
  /// decomposed file locations.
47
  void HighlightRange(RewriteBuffer &RB, unsigned B, unsigned E,
48
                      const char *BufferStart,
49
                      const char *StartTag, const char *EndTag);
50
 
51
  /// EscapeText - HTMLize a specified file so that special characters are
52
  /// are translated so that they are not interpreted as HTML tags.
53
  void EscapeText(Rewriter& R, FileID FID,
54
                  bool EscapeSpaces = false, bool ReplaceTabs = false);
55
 
56
  /// EscapeText - HTMLized the provided string so that special characters
57
  ///  in 's' are not interpreted as HTML tags.  Unlike the version of
58
  ///  EscapeText that rewrites a file, this version by default replaces tabs
59
  ///  with spaces.
60
  std::string EscapeText(StringRef s,
61
                         bool EscapeSpaces = false, bool ReplaceTabs = false);
62
 
63
  void AddLineNumbers(Rewriter& R, FileID FID);
64
 
65
  void AddHeaderFooterInternalBuiltinCSS(Rewriter &R, FileID FID,
66
                                         StringRef title);
67
 
68
  /// SyntaxHighlight - Relex the specified FileID and annotate the HTML with
69
  /// information about keywords, comments, etc.
70
  void SyntaxHighlight(Rewriter &R, FileID FID, const Preprocessor &PP);
71
 
72
  /// HighlightMacros - This uses the macro table state from the end of the
73
  /// file, to reexpand macros and insert (into the HTML) information about the
74
  /// macro expansions.  This won't be perfectly perfect, but it will be
75
  /// reasonably close.
76
  void HighlightMacros(Rewriter &R, FileID FID, const Preprocessor &PP);
77
 
78
} // end html namespace
79
} // end clang namespace
80
 
81
#endif