From 46f92523918fd4ac4df5489265c7f85c1b28baea Mon Sep 17 00:00:00 2001
From: Dmitri Gribenko <gribozavr@gmail.com>
Date: Fri, 11 Jan 2013 19:28:44 +0000
Subject: [PATCH] libclang: use getCursorTU and getCursorASTUnit instead of
 explicit casts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172241 91177308-0d34-0410-b5e6-96231b3b80d8
---
 tools/libclang/CIndex.cpp    | 3 +--
 tools/libclang/CIndexCXX.cpp | 5 ++---
 tools/libclang/CXCursor.cpp  | 2 +-
 tools/libclang/CXType.cpp    | 3 +--
 4 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp
index c2503fe52c7..249abcc2c5b 100644
--- a/tools/libclang/CIndex.cpp
+++ b/tools/libclang/CIndex.cpp
@@ -3118,8 +3118,7 @@ static CXString getDeclSpelling(Decl *D) {
 
 CXString clang_getCursorSpelling(CXCursor C) {
   if (clang_isTranslationUnit(C.kind))
-    return clang_getTranslationUnitSpelling(
-                            static_cast<CXTranslationUnit>(C.data[2]));
+    return clang_getTranslationUnitSpelling(getCursorTU(C));
 
   if (clang_isReference(C.kind)) {
     switch (C.kind) {
diff --git a/tools/libclang/CIndexCXX.cpp b/tools/libclang/CIndexCXX.cpp
index 9bc3efa095d..6a1b7de29cc 100644
--- a/tools/libclang/CIndexCXX.cpp
+++ b/tools/libclang/CIndexCXX.cpp
@@ -58,8 +58,7 @@ enum CXCursorKind clang_getTemplateCursorKind(CXCursor C) {
   case CXCursor_FunctionTemplate:
     if (TemplateDecl *Template
                            = dyn_cast_or_null<TemplateDecl>(getCursorDecl(C)))
-      return MakeCXCursor(Template->getTemplatedDecl(), 
-                          static_cast<CXTranslationUnit>(C.data[2])).kind;
+      return MakeCXCursor(Template->getTemplatedDecl(), getCursorTU(C)).kind;
     break;
       
   case CXCursor_ClassTemplatePartialSpecialization:
@@ -122,7 +121,7 @@ CXCursor clang_getSpecializedCursorTemplate(CXCursor C) {
   if (!Template)
     return clang_getNullCursor();
   
-  return MakeCXCursor(Template, static_cast<CXTranslationUnit>(C.data[2]));
+  return MakeCXCursor(Template, getCursorTU(C));
 }
   
 } // end extern "C"
diff --git a/tools/libclang/CXCursor.cpp b/tools/libclang/CXCursor.cpp
index 95089621226..8a9cf233c07 100644
--- a/tools/libclang/CXCursor.cpp
+++ b/tools/libclang/CXCursor.cpp
@@ -805,7 +805,7 @@ ASTContext &cxcursor::getCursorContext(CXCursor Cursor) {
 }
 
 ASTUnit *cxcursor::getCursorASTUnit(CXCursor Cursor) {
-  CXTranslationUnit TU = static_cast<CXTranslationUnit>(Cursor.data[2]);
+  CXTranslationUnit TU = getCursorTU(Cursor);
   if (!TU)
     return 0;
   return static_cast<ASTUnit *>(TU->TUData);
diff --git a/tools/libclang/CXType.cpp b/tools/libclang/CXType.cpp
index 25ea2853d3f..c18b48a82d2 100644
--- a/tools/libclang/CXType.cpp
+++ b/tools/libclang/CXType.cpp
@@ -636,8 +636,7 @@ CXString clang_getDeclObjCTypeEncoding(CXCursor C) {
     return cxstring::createCXString("");
 
   Decl *D = static_cast<Decl*>(C.data[0]);
-  CXTranslationUnit TU = static_cast<CXTranslationUnit>(C.data[2]);
-  ASTUnit *AU = static_cast<ASTUnit*>(TU->TUData);
+  ASTUnit *AU = cxcursor::getCursorASTUnit(C);
   ASTContext &Ctx = AU->getASTContext();
   std::string encoding;
 
-- 
GitLab