From e42e578ad8a36ad5bd06c8a3110cbd3119aaee36 Mon Sep 17 00:00:00 2001 From: Dmitri Gribenko Date: Sat, 26 Jan 2013 21:32:42 +0000 Subject: [PATCH] libclang: some type safety for CXTranslationUnitImpl's internals There is no reason to store pointers as 'void*' in CXTranslationUnitImpl, since it does not affect libclang ABI. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173588 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/libclang/CIndex.cpp | 6 +++--- tools/libclang/CIndexDiagnostic.cpp | 4 ++-- tools/libclang/CXTranslationUnit.h | 13 ++++++++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 1127c7c20b..c4d4a5a451 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -60,12 +60,12 @@ using namespace clang::cxstring; using namespace clang::cxtu; using namespace clang::cxindex; -CXTranslationUnit cxtu::MakeCXTranslationUnit(CIndexer *CIdx, ASTUnit *TU) { - if (!TU) +CXTranslationUnit cxtu::MakeCXTranslationUnit(CIndexer *CIdx, ASTUnit *AU) { + if (!AU) return 0; CXTranslationUnit D = new CXTranslationUnitImpl(); D->CIdx = CIdx; - D->TUData = TU; + D->TheASTUnit = AU; D->StringPool = createCXStringPool(); D->Diagnostics = 0; D->OverridenCursorsPool = createOverridenCXCursorsPool(); diff --git a/tools/libclang/CIndexDiagnostic.cpp b/tools/libclang/CIndexDiagnostic.cpp index afccbb81b3..f48034e30b 100644 --- a/tools/libclang/CIndexDiagnostic.cpp +++ b/tools/libclang/CIndexDiagnostic.cpp @@ -209,7 +209,7 @@ CXDiagnosticSetImpl *cxdiag::lazyCreateDiags(CXTranslationUnit TU, extern "C" { unsigned clang_getNumDiagnostics(CXTranslationUnit Unit) { - if (!Unit->TUData) + if (!cxtu::getASTUnit(Unit)) return 0; return lazyCreateDiags(Unit, /*checkIfChanged=*/true)->getNumDiagnostics(); } @@ -227,7 +227,7 @@ CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit, unsigned Index) { } CXDiagnosticSet clang_getDiagnosticSetFromTU(CXTranslationUnit Unit) { - if (!Unit->TUData) + if (!cxtu::getASTUnit(Unit)) return 0; return static_cast(lazyCreateDiags(Unit)); } diff --git a/tools/libclang/CXTranslationUnit.h b/tools/libclang/CXTranslationUnit.h index 323d4b78aa..15e89ea849 100644 --- a/tools/libclang/CXTranslationUnit.h +++ b/tools/libclang/CXTranslationUnit.h @@ -16,17 +16,20 @@ #include "clang-c/Index.h" -extern "C" { +namespace clang { + class ASTUnit; + class CIndexer; +} // namespace clang + struct CXTranslationUnitImpl { void *CIdx; - void *TUData; + clang::ASTUnit *TheASTUnit; void *StringPool; void *Diagnostics; void *OverridenCursorsPool; void *FormatContext; unsigned FormatInMemoryUniqueId; }; -} namespace clang { class ASTUnit; @@ -34,10 +37,10 @@ namespace clang { namespace cxtu { -CXTranslationUnitImpl *MakeCXTranslationUnit(CIndexer *CIdx, ASTUnit *TU); +CXTranslationUnitImpl *MakeCXTranslationUnit(CIndexer *CIdx, ASTUnit *AU); static inline ASTUnit *getASTUnit(CXTranslationUnit TU) { - return static_cast(TU->TUData); + return TU->TheASTUnit; } class CXTUOwner { -- 2.40.0