libclang: add new StringSet type

This allows the return of a set of CXStrings from libclang.  This is setup work
for an upcoming change to permit returning multiple mangled symbols.

llvm-svn: 252852
This commit is contained in:
Saleem Abdulrasool 2015-11-12 03:57:16 +00:00
parent 2af10e2eed
commit 5d92eaeb17
4 changed files with 28 additions and 0 deletions

View File

@ -40,6 +40,11 @@ typedef struct {
unsigned private_flags;
} CXString;
typedef struct {
CXString *Strings;
unsigned Count;
} CXStringSet;
/**
* \brief Retrieve the character data associated with the given string.
*/
@ -50,6 +55,11 @@ CINDEX_LINKAGE const char *clang_getCString(CXString string);
*/
CINDEX_LINKAGE void clang_disposeString(CXString string);
/**
* \brief Free the given string set.
*/
CINDEX_LINKAGE void clang_disposeStringSet(CXStringSet *set);
/**
* @}
*/

View File

@ -112,6 +112,15 @@ CXString createCXString(CXStringBuf *buf) {
return Str;
}
CXStringSet *createSet(const std::vector<std::string> &Strings) {
CXStringSet *Set = new CXStringSet;
Set->Count = Strings.size();
Set->Strings = new CXString[Set->Count];
for (unsigned SI = 0, SE = Set->Count; SI < SE; ++SI)
Set->Strings[SI] = createDup(Strings[SI]);
return Set;
}
//===----------------------------------------------------------------------===//
// String pools.
@ -175,5 +184,11 @@ void clang_disposeString(CXString string) {
break;
}
}
void clang_disposeStringSet(CXStringSet *set) {
delete[] set->Strings;
delete set;
}
} // end: extern "C"

View File

@ -68,6 +68,8 @@ CXString createRef(std::string String) = delete;
/// \brief Create a CXString object that is backed by a string buffer.
CXString createCXString(CXStringBuf *buf);
CXStringSet *createSet(const std::vector<std::string> &Strings);
/// \brief A string pool used for fast allocation/deallocation of strings.
class CXStringPool {
public:

View File

@ -120,6 +120,7 @@ clang_disposeOverriddenCursors
clang_disposeCXPlatformAvailability
clang_disposeSourceRangeList
clang_disposeString
clang_disposeStringSet
clang_disposeTokens
clang_disposeTranslationUnit
clang_enableStackTraces