| //===--- ProgramImpl.h - Internal Program implementation---------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Internal implementation for the Program class |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_CLANG_INDEX_PROGRAMIMPL_H |
| #define LLVM_CLANG_INDEX_PROGRAMIMPL_H |
| |
| #include "EntityImpl.h" |
| #include "clang/Basic/IdentifierTable.h" |
| #include "clang/Basic/LangOptions.h" |
| |
| namespace clang { |
| |
| namespace idx { |
| class EntityListener; |
| |
| class ProgramImpl { |
| public: |
| typedef llvm::FoldingSet<EntityImpl> EntitySetTy; |
| |
| private: |
| EntitySetTy Entities; |
| llvm::BumpPtrAllocator BumpAlloc; |
| |
| IdentifierTable Identifiers; |
| SelectorTable Selectors; |
| |
| ProgramImpl(const ProgramImpl&); // do not implement |
| ProgramImpl &operator=(const ProgramImpl &); // do not implement |
| |
| public: |
| ProgramImpl() : Identifiers(LangOptions()) { } |
| |
| EntitySetTy &getEntities() { return Entities; } |
| IdentifierTable &getIdents() { return Identifiers; } |
| SelectorTable &getSelectors() { return Selectors; } |
| |
| void *Allocate(unsigned Size, unsigned Align = 8) { |
| return BumpAlloc.Allocate(Size, Align); |
| } |
| }; |
| |
| } // namespace idx |
| |
| } // namespace clang |
| |
| #endif |