diff options
Diffstat (limited to 'include/clang/Frontend/InitHeaderSearch.h')
-rw-r--r-- | include/clang/Frontend/InitHeaderSearch.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/include/clang/Frontend/InitHeaderSearch.h b/include/clang/Frontend/InitHeaderSearch.h new file mode 100644 index 0000000..5151666 --- /dev/null +++ b/include/clang/Frontend/InitHeaderSearch.h @@ -0,0 +1,74 @@ +//===--- InitHeaderSearch.h - Initialize header search paths ----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the InitHeaderSearch class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_FRONTEND_INIT_HEADER_SEARCH_H_ +#define LLVM_CLANG_FRONTEND_INIT_HEADER_SEARCH_H_ + +#include <string> +#include <vector> + +#include "clang/Lex/DirectoryLookup.h" + +namespace clang { + +class HeaderSearch; +class LangOptions; + +/// InitHeaderSearch - This class makes it easier to set the search paths of +/// a HeaderSearch object. InitHeaderSearch stores several search path lists +/// internally, which can be sent to a HeaderSearch object in one swoop. +class InitHeaderSearch { + std::vector<DirectoryLookup> IncludeGroup[4]; + HeaderSearch& Headers; + bool Verbose; + std::string isysroot; + +public: + /// InitHeaderSearch::IncludeDirGroup - Identifies the several search path + /// lists stored internally. + enum IncludeDirGroup { + Quoted = 0, //< `#include ""` paths. Thing `gcc -iquote`. + Angled, //< Paths for both `#include ""` and `#include <>`. (`-I`) + System, //< Like Angled, but marks system directories. + After //< Like System, but searched after the system directories. + }; + + InitHeaderSearch(HeaderSearch &HS, + bool verbose = false, const std::string &iSysroot = "") + : Headers(HS), Verbose(verbose), isysroot(iSysroot) {} + + /// AddPath - Add the specified path to the specified group list. + void AddPath(const std::string &Path, IncludeDirGroup Group, + bool isCXXAware, bool isUserSupplied, + bool isFramework, bool IgnoreSysRoot = false); + + /// AddEnvVarPaths - Add a list of paths from an environment variable to a + /// header search list. + void AddEnvVarPaths(const char *Name); + + /// AddDefaultEnvVarPaths - Adds list of paths from default environment + /// variables such as CPATH. + void AddDefaultEnvVarPaths(const LangOptions &Lang); + + /// AddDefaultSystemIncludePaths - Adds the default system include paths so + /// that e.g. stdio.h is found. + void AddDefaultSystemIncludePaths(const LangOptions &Lang); + + /// Realize - Merges all search path lists into one list and send it to + /// HeaderSearch. + void Realize(); +}; + +} // end namespace clang + +#endif |