From: Ted Kremenek Date: Tue, 16 Nov 2010 01:56:27 +0000 (+0000) Subject: Move CXString creation/management routines into X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ed122735639d83c10f18c28c7fd117bfcd0f62cb;p=clang Move CXString creation/management routines into their own .cpp file and make the interpretation of its flags private. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119319 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h index f3ba9974eb..c8af3491cd 100644 --- a/include/clang-c/Index.h +++ b/include/clang-c/Index.h @@ -134,9 +134,7 @@ enum CXAvailabilityKind { */ typedef struct { const char *Spelling; - /* A 1 value indicates the clang_ indexing API needed to allocate the string - (and it must be freed by clang_disposeString()). */ - int MustFreeString; + unsigned private_flags; } CXString; /** diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index edaf116d9a..c0c7a29e97 100644 --- a/tools/c-index-test/c-index-test.c +++ b/tools/c-index-test/c-index-test.c @@ -1306,7 +1306,7 @@ int print_usrs(const char **I, const char **E) { else { CXString x; x.Spelling = I[2]; - x.MustFreeString = 0; + x.private_flags = 0; print_usr(clang_constructUSR_ObjCIvar(I[1], x)); } @@ -1333,7 +1333,7 @@ int print_usrs(const char **I, const char **E) { else { CXString x; x.Spelling = I[3]; - x.MustFreeString = 0; + x.private_flags = 0; print_usr(clang_constructUSR_ObjCMethod(I[1], atoi(I[2]), x)); } I += 4; @@ -1363,7 +1363,7 @@ int print_usrs(const char **I, const char **E) { else { CXString x; x.Spelling = I[2]; - x.MustFreeString = 0; + x.private_flags = 0; print_usr(clang_constructUSR_ObjCProperty(I[1], x)); } I += 3; diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index b573c067a8..a25570e0c1 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -14,6 +14,7 @@ #include "CIndexer.h" #include "CXCursor.h" +#include "CXString.h" #include "CXType.h" #include "CXSourceLocation.h" #include "CIndexDiagnostic.h" @@ -4574,51 +4575,6 @@ CXType clang_getIBOutletCollectionType(CXCursor C) { } } // end: extern "C" -//===----------------------------------------------------------------------===// -// CXString Operations. -//===----------------------------------------------------------------------===// - -extern "C" { -const char *clang_getCString(CXString string) { - return string.Spelling; -} - -void clang_disposeString(CXString string) { - if (string.MustFreeString && string.Spelling) - free((void*)string.Spelling); -} - -} // end: extern "C" - -namespace clang { namespace cxstring { -CXString createCXString(const char *String, bool DupString){ - CXString Str; - if (DupString) { - Str.Spelling = strdup(String); - Str.MustFreeString = 1; - } else { - Str.Spelling = String; - Str.MustFreeString = 0; - } - return Str; -} - -CXString createCXString(llvm::StringRef String, bool DupString) { - CXString Result; - if (DupString || (!String.empty() && String.data()[String.size()] != 0)) { - char *Spelling = (char *)malloc(String.size() + 1); - memmove(Spelling, String.data(), String.size()); - Spelling[String.size()] = 0; - Result.Spelling = Spelling; - Result.MustFreeString = 1; - } else { - Result.Spelling = String.data(); - Result.MustFreeString = 0; - } - return Result; -} -}} - //===----------------------------------------------------------------------===// // Misc. utility functions. //===----------------------------------------------------------------------===// diff --git a/tools/libclang/CIndexCXX.cpp b/tools/libclang/CIndexCXX.cpp index 3ade5195d8..fca89ed410 100644 --- a/tools/libclang/CIndexCXX.cpp +++ b/tools/libclang/CIndexCXX.cpp @@ -18,7 +18,6 @@ #include "clang/AST/DeclTemplate.h" using namespace clang; -using namespace clang::cxstring; using namespace clang::cxcursor; extern "C" { diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp index f22f5eeff6..7e8cdb2c20 100644 --- a/tools/libclang/CIndexCodeCompletion.cpp +++ b/tools/libclang/CIndexCodeCompletion.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "CIndexer.h" +#include "CXString.h" #include "CIndexDiagnostic.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/FileManager.h" diff --git a/tools/libclang/CIndexDiagnostic.cpp b/tools/libclang/CIndexDiagnostic.cpp index 036a28b538..84f39e3ea0 100644 --- a/tools/libclang/CIndexDiagnostic.cpp +++ b/tools/libclang/CIndexDiagnostic.cpp @@ -13,6 +13,7 @@ #include "CIndexDiagnostic.h" #include "CIndexer.h" #include "CXSourceLocation.h" +#include "CXString.h" #include "clang/Frontend/ASTUnit.h" #include "clang/Frontend/FrontendDiagnostic.h" diff --git a/tools/libclang/CIndexUSRs.cpp b/tools/libclang/CIndexUSRs.cpp index e22980df39..adc77d16b6 100644 --- a/tools/libclang/CIndexUSRs.cpp +++ b/tools/libclang/CIndexUSRs.cpp @@ -13,6 +13,7 @@ #include "CIndexer.h" #include "CXCursor.h" +#include "CXString.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/DeclVisitor.h" #include "clang/Frontend/ASTUnit.h" diff --git a/tools/libclang/CIndexer.h b/tools/libclang/CIndexer.h index 32cfa971f3..8bcdce343a 100644 --- a/tools/libclang/CIndexer.h +++ b/tools/libclang/CIndexer.h @@ -24,13 +24,6 @@ namespace llvm { class CrashRecoveryContext; } -namespace clang { -namespace cxstring { - CXString createCXString(const char *String, bool DupString = false); - CXString createCXString(llvm::StringRef String, bool DupString = true); -} -} - class CIndexer { bool OnlyLocalDecls; bool DisplayDiagnostics; diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt index 9a2a2a63cf..d1d99726cc 100644 --- a/tools/libclang/CMakeLists.txt +++ b/tools/libclang/CMakeLists.txt @@ -27,6 +27,7 @@ add_clang_library(libclang CIndexUSRs.cpp CIndexer.cpp CXCursor.cpp + CXString.cpp CXType.cpp ../../include/clang-c/Index.h ) diff --git a/tools/libclang/CXCursor.cpp b/tools/libclang/CXCursor.cpp index f5941e7327..a8cbca57dc 100644 --- a/tools/libclang/CXCursor.cpp +++ b/tools/libclang/CXCursor.cpp @@ -14,6 +14,7 @@ //===----------------------------------------------------------------------===// #include "CXCursor.h" +#include "CXString.h" #include "clang/Frontend/ASTUnit.h" #include "clang/AST/Decl.h" #include "clang/AST/DeclCXX.h" diff --git a/tools/libclang/CXType.cpp b/tools/libclang/CXType.cpp index 05912b1db3..45a5bed279 100644 --- a/tools/libclang/CXType.cpp +++ b/tools/libclang/CXType.cpp @@ -13,6 +13,7 @@ #include "CIndexer.h" #include "CXCursor.h" +#include "CXString.h" #include "CXType.h" #include "clang/AST/Expr.h" #include "clang/AST/Type.h"