forked from OSchip/llvm-project
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:
parent
2af10e2eed
commit
5d92eaeb17
|
@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -120,6 +120,7 @@ clang_disposeOverriddenCursors
|
|||
clang_disposeCXPlatformAvailability
|
||||
clang_disposeSourceRangeList
|
||||
clang_disposeString
|
||||
clang_disposeStringSet
|
||||
clang_disposeTokens
|
||||
clang_disposeTranslationUnit
|
||||
clang_enableStackTraces
|
||||
|
|
Loading…
Reference in New Issue