clang  8.0.0svn
Go to the documentation of this file.
1 //===--- SimpleFormatContext.h ----------------------------------*- 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 ///
12 /// Defines a utility class for use of clang-format in libclang
13 //
14 //===----------------------------------------------------------------------===//
19 #include "clang/Basic/Diagnostic.h"
25 #include "llvm/Support/FileSystem.h"
26 #include "llvm/Support/Path.h"
27 #include "llvm/Support/raw_ostream.h"
29 namespace clang {
30 namespace index {
32 /// A small class to be used by libclang clients to format
33 /// a declaration string in memory. This object is instantiated once
34 /// and used each time a formatting is needed.
36 public:
38  : DiagOpts(new DiagnosticOptions()),
42  Sources(*Diagnostics, Files), Rewrite(Sources, Options) {
43  Diagnostics->setClient(new IgnoringDiagConsumer, true);
44  }
46  FileID createInMemoryFile(StringRef Name, StringRef Content) {
47  InMemoryFileSystem->addFile(Name, 0,
48  llvm::MemoryBuffer::getMemBuffer(Content));
49  const FileEntry *Entry = Files.getFile(Name);
50  assert(Entry != nullptr);
52  }
54  std::string getRewrittenText(FileID ID) {
55  std::string Result;
56  llvm::raw_string_ostream OS(Result);
57  Rewrite.getEditBuffer(ID).write(OS);
58  OS.flush();
59  return Result;
60  }
68 };
70 } // end namespace index
71 } // end namespace clang
73 #endif
Implements support for file system lookup, file system caching, and directory search management...
Definition: FileManager.h:122
Defines the clang::FileManager interface and associated types.
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
Definition: Dominators.h:30
IntrusiveRefCntPtr< DiagnosticsEngine > Diagnostics
Defines the SourceManager interface.
RewriteBuffer & getEditBuffer(FileID FID)
getEditBuffer - This is like getRewriteBufferFor, but always returns a buffer, and allows you to writ...
Definition: Rewriter.cpp:227
SimpleFormatContext(LangOptions Options)
A small class to be used by libclang clients to format a declaration string in memory.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Definition: LangOptions.h:50
Concrete class used by the front-end to report problems and issues.
Definition: Diagnostic.h:149
Defines the Diagnostic-related interfaces.
IntrusiveRefCntPtr< llvm::vfs::InMemoryFileSystem > InMemoryFileSystem
const FileEntry * getFile(StringRef Filename, bool OpenFile=false, bool CacheFailure=true)
Lookup, cache, and verify the specified file (real or virtual).
std::string getRewrittenText(FileID ID)
Defines the clang::LangOptions interface.
FileID createFileID(const FileEntry *SourceFile, SourceLocation IncludePos, SrcMgr::CharacteristicKind FileCharacter, int LoadedID=0, unsigned LoadedOffset=0)
Create a new FileID that represents the specified file being #included from the specified IncludePosi...
Encodes a location in the source.
raw_ostream & write(raw_ostream &Stream) const
Write to Stream the result of applying all changes to the original buffer.
Definition: Rewriter.cpp:38
Options for controlling the compiler diagnostics engine.
Cached information about one file (either on disk or in the virtual file system). ...
Definition: FileManager.h:60
An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...
Dataflow Directional Tag Classes.
A diagnostic client that ignores all diagnostics.
Definition: Diagnostic.h:1540
FileID createInMemoryFile(StringRef Name, StringRef Content)
Used for handling and querying diagnostic IDs.
IntrusiveRefCntPtr< DiagnosticOptions > DiagOpts
Keeps track of options that affect how file operations are performed.
Rewriter - This is the main interface to the rewrite buffers.
Definition: Rewriter.h:33
This class handles loading and caching of source files into memory.