//===--- 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 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