clang  7.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 /// \brief 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 /// \brief 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()),
40  DiagOpts.get())),
44  Rewrite(Sources, Options) {
45  Diagnostics->setClient(new IgnoringDiagConsumer, true);
46  }
48  FileID createInMemoryFile(StringRef Name, StringRef Content) {
49  InMemoryFileSystem->addFile(Name, 0,
50  llvm::MemoryBuffer::getMemBuffer(Content));
51  const FileEntry *Entry = Files.getFile(Name);
52  assert(Entry != nullptr);
54  }
56  std::string getRewrittenText(FileID ID) {
57  std::string Result;
58  llvm::raw_string_ostream OS(Result);
59  Rewrite.getEditBuffer(ID).write(OS);
60  OS.flush();
61  return Result;
62  }
70 };
72 } // end namespace index
73 } // end namespace clang
75 #endif
Implements support for file system lookup, file system caching, and directory search management...
Definition: FileManager.h:116
Defines the clang::FileManager interface and associated types.
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:223
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.
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:25
Options for controlling the compiler diagnostics engine.
Cached information about one file (either on disk or in the virtual file system). ...
Definition: FileManager.h:59
IntrusiveRefCntPtr< vfs::InMemoryFileSystem > InMemoryFileSystem
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:1542
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:31
This class handles loading and caching of source files into memory.