mirror of https://github.com/microsoft/clang.git
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252852 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b1298b03db
commit
cc31f6a45f
|
@ -40,6 +40,11 @@ typedef struct {
|
||||||
unsigned private_flags;
|
unsigned private_flags;
|
||||||
} CXString;
|
} CXString;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CXString *Strings;
|
||||||
|
unsigned Count;
|
||||||
|
} CXStringSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Retrieve the character data associated with the given string.
|
* \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);
|
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;
|
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.
|
// String pools.
|
||||||
|
@ -175,5 +184,11 @@ void clang_disposeString(CXString string) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clang_disposeStringSet(CXStringSet *set) {
|
||||||
|
delete[] set->Strings;
|
||||||
|
delete set;
|
||||||
|
}
|
||||||
|
|
||||||
} // end: extern "C"
|
} // 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.
|
/// \brief Create a CXString object that is backed by a string buffer.
|
||||||
CXString createCXString(CXStringBuf *buf);
|
CXString createCXString(CXStringBuf *buf);
|
||||||
|
|
||||||
|
CXStringSet *createSet(const std::vector<std::string> &Strings);
|
||||||
|
|
||||||
/// \brief A string pool used for fast allocation/deallocation of strings.
|
/// \brief A string pool used for fast allocation/deallocation of strings.
|
||||||
class CXStringPool {
|
class CXStringPool {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -120,6 +120,7 @@ clang_disposeOverriddenCursors
|
||||||
clang_disposeCXPlatformAvailability
|
clang_disposeCXPlatformAvailability
|
||||||
clang_disposeSourceRangeList
|
clang_disposeSourceRangeList
|
||||||
clang_disposeString
|
clang_disposeString
|
||||||
|
clang_disposeStringSet
|
||||||
clang_disposeTokens
|
clang_disposeTokens
|
||||||
clang_disposeTranslationUnit
|
clang_disposeTranslationUnit
|
||||||
clang_enableStackTraces
|
clang_enableStackTraces
|
||||||
|
|
Loading…
Reference in New Issue