Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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
  82.