diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2014-03-20 04:51:48 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2014-03-20 04:51:48 +0000 |
commit | a9ab4d46bb7d7f6bcf1b5eeec8878b8b74ae368d (patch) | |
tree | 6b590bbf9d95448d095e529d6bd8cd1694151181 /clang/tools/libclang/BuildSystem.cpp | |
parent | ecf2256dfe19aa52b4b6d914dffc685fc5ec7e60 (diff) | |
download | bcm5719-llvm-a9ab4d46bb7d7f6bcf1b5eeec8878b8b74ae368d.tar.gz bcm5719-llvm-a9ab4d46bb7d7f6bcf1b5eeec8878b8b74ae368d.zip |
[libclang] Introduce clang_VirtualFileOverlay_setCaseSensitivity that exposes the VFS option
to set the case-sensitivity for lookups.
rdar://16374696
llvm-svn: 204303
Diffstat (limited to 'clang/tools/libclang/BuildSystem.cpp')
-rw-r--r-- | clang/tools/libclang/BuildSystem.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/clang/tools/libclang/BuildSystem.cpp b/clang/tools/libclang/BuildSystem.cpp index 4b151e64d58..89c6e91d23c 100644 --- a/clang/tools/libclang/BuildSystem.cpp +++ b/clang/tools/libclang/BuildSystem.cpp @@ -15,6 +15,7 @@ #include "CXString.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/Optional.h" #include "llvm/Support/Path.h" #include "llvm/Support/TimeValue.h" #include "llvm/Support/raw_ostream.h" @@ -28,6 +29,7 @@ unsigned long long clang_getBuildSessionTimestamp(void) { struct CXVirtualFileOverlayImpl { std::vector<std::pair<std::string, std::string> > Mappings; + Optional<bool> IsCaseSensitive; }; CXVirtualFileOverlay clang_VirtualFileOverlay_create(unsigned) { @@ -57,6 +59,16 @@ clang_VirtualFileOverlay_addFileMapping(CXVirtualFileOverlay VFO, return CXError_Success; } +enum CXErrorCode +clang_VirtualFileOverlay_setCaseSensitivity(CXVirtualFileOverlay VFO, + int caseSensitive) { + if (!VFO) + return CXError_InvalidArguments; + + VFO->IsCaseSensitive = caseSensitive; + return CXError_Success; +} + namespace { struct EntryTy { std::string VPath; @@ -69,15 +81,25 @@ struct EntryTy { class JSONVFSPrinter { llvm::raw_ostream &OS; + CXVirtualFileOverlay VFO; public: - JSONVFSPrinter(llvm::raw_ostream &OS) : OS(OS) {} + JSONVFSPrinter(llvm::raw_ostream &OS, CXVirtualFileOverlay VFO) + : OS(OS), VFO(VFO) {} /// Entries must be sorted. void print(ArrayRef<EntryTy> Entries) { OS << "{\n" - " 'version': 0,\n" - " 'roots': [\n"; + " 'version': 0,\n"; + if (VFO->IsCaseSensitive.hasValue()) { + OS << " 'case-sensitive': '"; + if (VFO->IsCaseSensitive.getValue()) + OS << "true"; + else + OS << "false"; + OS << "',\n"; + } + OS << " 'roots': [\n"; printDirNodes(Entries, "", 4); OS << " ]\n" "}\n"; @@ -184,7 +206,7 @@ clang_VirtualFileOverlay_writeToBuffer(CXVirtualFileOverlay VFO, unsigned, llvm::SmallString<256> Buf; llvm::raw_svector_ostream OS(Buf); - JSONVFSPrinter Printer(OS); + JSONVFSPrinter Printer(OS, VFO); Printer.print(Entries); StringRef Data = OS.str(); |