CIndexer.h revision f51f20fa34654da75d15a9e2a1a0cd2fc0d8603d
1//===- CIndexer.h - Clang-C Source Indexing Library -----------------------===// 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 CIndexer, a subclass of Indexer that provides extra 11// functionality needed by the CIndex library. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_CLANG_CINDEXER_H 16#define LLVM_CLANG_CINDEXER_H 17 18#include "clang-c/Index.h" 19#include "llvm/ADT/StringRef.h" 20#include "llvm/System/Path.h" 21#include <vector> 22 23namespace clang { 24namespace cxstring { 25 CXString createCXString(const char *String, bool DupString = false); 26 CXString createCXString(llvm::StringRef String, bool DupString = true); 27} 28} 29 30class CIndexer { 31 bool UseExternalASTGeneration; 32 bool OnlyLocalDecls; 33 bool DisplayDiagnostics; 34 35 llvm::sys::Path ClangPath; 36 37public: 38 CIndexer() 39 : UseExternalASTGeneration(false), OnlyLocalDecls(false), 40 DisplayDiagnostics(false) { } 41 42 /// \brief Whether we only want to see "local" declarations (that did not 43 /// come from a previous precompiled header). If false, we want to see all 44 /// declarations. 45 bool getOnlyLocalDecls() const { return OnlyLocalDecls; } 46 void setOnlyLocalDecls(bool Local = true) { OnlyLocalDecls = Local; } 47 48 bool getDisplayDiagnostics() const { return DisplayDiagnostics; } 49 void setDisplayDiagnostics(bool Display = true) { 50 DisplayDiagnostics = Display; 51 } 52 53 bool getUseExternalASTGeneration() const { return UseExternalASTGeneration; } 54 void setUseExternalASTGeneration(bool Value) { 55 UseExternalASTGeneration = Value; 56 } 57 58 /// \brief Get the path of the clang binary. 59 const llvm::sys::Path& getClangPath(); 60 61 /// \brief Get the path of the clang resource files. 62 std::string getClangResourcesPath(); 63}; 64 65namespace clang { 66 /** 67 * \brief Given a set of "unsaved" files, create temporary files and 68 * construct the clang -cc1 argument list needed to perform the remapping. 69 * 70 * \returns true if an error occurred. 71 */ 72 bool RemapFiles(unsigned num_unsaved_files, 73 struct CXUnsavedFile *unsaved_files, 74 std::vector<std::string> &RemapArgs, 75 std::vector<llvm::sys::Path> &TemporaryFiles); 76} 77 78#endif 79