]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/clang/include/clang/Rewrite/Core/HTMLRewrite.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / clang / include / clang / Rewrite / Core / HTMLRewrite.h
1 //==- HTMLRewrite.h - Translate source code into prettified HTML ---*- 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 defines a set of functions used for translating source code
11 //  into beautified HTML.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_CLANG_HTMLREWRITER_H
16 #define LLVM_CLANG_HTMLREWRITER_H
17
18 #include "clang/Basic/SourceLocation.h"
19 #include <string>
20
21 namespace clang {
22
23 class Rewriter;
24 class RewriteBuffer;
25 class Preprocessor;
26
27 namespace html {
28
29   /// HighlightRange - Highlight a range in the source code with the specified
30   /// start/end tags.  B/E must be in the same file.  This ensures that
31   /// start/end tags are placed at the start/end of each line if the range is
32   /// multiline.
33   void HighlightRange(Rewriter &R, SourceLocation B, SourceLocation E,
34                       const char *StartTag, const char *EndTag);
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(const std::string& 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                                          const char *title = NULL);
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