1 //===- ChainedIncludesSource.h - Chained PCHs in Memory ---------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines the ChainedIncludesSource class, which converts headers
11 // to chained PCHs in memory, mainly used for testing.
13 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_CLANG_SERIALIZATION_CHAINEDINCLUDESSOURCE_H
15 #define LLVM_CLANG_SERIALIZATION_CHAINEDINCLUDESSOURCE_H
17 #include "clang/Sema/ExternalSemaSource.h"
21 class CompilerInstance;
23 class ChainedIncludesSource : public ExternalSemaSource {
25 virtual ~ChainedIncludesSource();
27 static ChainedIncludesSource *create(CompilerInstance &CI);
30 ExternalSemaSource &getFinalReader() const { return *FinalReader; }
32 std::vector<CompilerInstance *> CIs;
33 llvm::OwningPtr<ExternalSemaSource> FinalReader;
38 //===----------------------------------------------------------------------===//
39 // ExternalASTSource interface.
40 //===----------------------------------------------------------------------===//
42 virtual Decl *GetExternalDecl(uint32_t ID);
43 virtual Selector GetExternalSelector(uint32_t ID);
44 virtual uint32_t GetNumExternalSelectors();
45 virtual Stmt *GetExternalDeclStmt(uint64_t Offset);
46 virtual CXXBaseSpecifier *GetExternalCXXBaseSpecifiers(uint64_t Offset);
47 virtual DeclContextLookupResult
48 FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name);
49 virtual void MaterializeVisibleDecls(const DeclContext *DC);
50 virtual ExternalLoadResult FindExternalLexicalDecls(const DeclContext *DC,
51 bool (*isKindWeWant)(Decl::Kind),
52 llvm::SmallVectorImpl<Decl*> &Result);
53 virtual void CompleteType(TagDecl *Tag);
54 virtual void CompleteType(ObjCInterfaceDecl *Class);
55 virtual void StartedDeserializing();
56 virtual void FinishedDeserializing();
57 virtual void StartTranslationUnit(ASTConsumer *Consumer);
58 virtual void PrintStats();
60 /// Return the amount of memory used by memory buffers, breaking down
61 /// by heap-backed versus mmap'ed memory.
62 virtual void getMemoryBufferSizes(MemoryBufferSizes &sizes) const;
64 //===----------------------------------------------------------------------===//
65 // ExternalSemaSource interface.
66 //===----------------------------------------------------------------------===//
68 virtual void InitializeSema(Sema &S);
69 virtual void ForgetSema();
70 virtual std::pair<ObjCMethodList,ObjCMethodList> ReadMethodPool(Selector Sel);
71 virtual bool LookupUnqualified(LookupResult &R, Scope *S);