Home | History | Annotate | Download | only in Frontend
      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   ExternalSemaSource &getFinalReader() const { return *FinalReader; }
     30 
     31 private:
     32   std::vector<CompilerInstance *> CIs;
     33   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 bool FindExternalVisibleDeclsByName(const DeclContext *DC,
     48                                               DeclarationName Name);
     49   virtual ExternalLoadResult FindExternalLexicalDecls(const DeclContext *DC,
     50                                         bool (*isKindWeWant)(Decl::Kind),
     51                                         SmallVectorImpl<Decl*> &Result);
     52   virtual void CompleteType(TagDecl *Tag);
     53   virtual void CompleteType(ObjCInterfaceDecl *Class);
     54   virtual void StartedDeserializing();
     55   virtual void FinishedDeserializing();
     56   virtual void StartTranslationUnit(ASTConsumer *Consumer);
     57   virtual void PrintStats();
     58 
     59   /// Return the amount of memory used by memory buffers, breaking down
     60   /// by heap-backed versus mmap'ed memory.
     61   virtual void getMemoryBufferSizes(MemoryBufferSizes &sizes) const;
     62 
     63 //===----------------------------------------------------------------------===//
     64 // ExternalSemaSource interface.
     65 //===----------------------------------------------------------------------===//
     66 
     67   virtual void InitializeSema(Sema &S);
     68   virtual void ForgetSema();
     69   virtual void ReadMethodPool(Selector Sel);
     70   virtual bool LookupUnqualified(LookupResult &R, Scope *S);
     71 };
     72 
     73 }
     74 
     75 #endif
     76