]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/blob - contrib/llvm/tools/clang/include/clang/Serialization/ChainedIncludesSource.h
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
[FreeBSD/stable/9.git] / contrib / llvm / tools / clang / include / clang / Serialization / ChainedIncludesSource.h
1 //===- ChainedIncludesSource.h - Chained PCHs in Memory ---------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 //  This file defines the ChainedIncludesSource class, which converts headers
11 //  to chained PCHs in memory, mainly used for testing.
12 //
13 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_CLANG_SERIALIZATION_CHAINEDINCLUDESSOURCE_H
15 #define LLVM_CLANG_SERIALIZATION_CHAINEDINCLUDESSOURCE_H
16
17 #include "clang/Sema/ExternalSemaSource.h"
18 #include <vector>
19
20 namespace clang {
21   class CompilerInstance;
22
23 class ChainedIncludesSource : public ExternalSemaSource {
24 public:
25   virtual ~ChainedIncludesSource();
26
27   static ChainedIncludesSource *create(CompilerInstance &CI);
28
29 private:
30   ExternalSemaSource &getFinalReader() const { return *FinalReader; }
31
32   std::vector<CompilerInstance *> CIs;
33   llvm::OwningPtr<ExternalSemaSource> FinalReader;
34
35   
36 protected:
37
38 //===----------------------------------------------------------------------===//
39 // ExternalASTSource interface.
40 //===----------------------------------------------------------------------===//
41
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();
59
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;
63
64 //===----------------------------------------------------------------------===//
65 // ExternalSemaSource interface.
66 //===----------------------------------------------------------------------===//
67
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);
72 };
73
74 }
75
76 #endif