[libclang] Indexing API: Fix issues, mostly C++ related.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145107 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/libclang/IndexingContext.h b/tools/libclang/IndexingContext.h
index cbf96d8..9a9fb3f 100644
--- a/tools/libclang/IndexingContext.h
+++ b/tools/libclang/IndexingContext.h
@@ -28,6 +28,10 @@
struct EntityInfo : public CXIdxEntityInfo {
const NamedDecl *Dcl;
IndexingContext *IndexCtx;
+
+ EntityInfo() {
+ name = USR = 0;
+ }
};
struct ContainerInfo : public CXIdxContainerInfo {
@@ -225,35 +229,25 @@
SmallVector<DeclGroupRef, 8> TUDeclsInObjCContainer;
- llvm::SmallString<256> StrScratch;
+ llvm::BumpPtrAllocator StrScratch;
unsigned StrAdapterCount;
class StrAdapter {
- llvm::SmallString<256> &Scratch;
IndexingContext &IdxCtx;
public:
- StrAdapter(IndexingContext &indexCtx)
- : Scratch(indexCtx.StrScratch), IdxCtx(indexCtx) {
+ StrAdapter(IndexingContext &indexCtx) : IdxCtx(indexCtx) {
++IdxCtx.StrAdapterCount;
}
~StrAdapter() {
--IdxCtx.StrAdapterCount;
if (IdxCtx.StrAdapterCount == 0)
- Scratch.clear();
+ IdxCtx.StrScratch.Reset();
}
const char *toCStr(StringRef Str);
-
- unsigned getCurSize() const { return Scratch.size(); }
-
- const char *getCStr(unsigned CharIndex) {
- Scratch.push_back('\0');
- return Scratch.data() + CharIndex;
- }
-
- SmallVectorImpl<char> &getBuffer() { return Scratch; }
+ const char *copyCStr(StringRef Str);
};
struct ObjCProtocolListInfo {
@@ -305,7 +299,8 @@
IndexingContext(CXClientData clientData, IndexerCallbacks &indexCallbacks,
unsigned indexOptions, CXTranslationUnit cxTU)
: Ctx(0), ClientData(clientData), CB(indexCallbacks),
- IndexOptions(indexOptions), CXTU(cxTU), StrAdapterCount(0) { }
+ IndexOptions(indexOptions), CXTU(cxTU),
+ StrScratch(/*size=*/1024), StrAdapterCount(0) { }
ASTContext &getASTContext() const { return *Ctx; }