diff options
author | rdivacky <rdivacky@FreeBSD.org> | 2009-10-14 18:03:49 +0000 |
---|---|---|
committer | rdivacky <rdivacky@FreeBSD.org> | 2009-10-14 18:03:49 +0000 |
commit | 9092c3e0fa01f3139b016d05d267a89e3b07747a (patch) | |
tree | 137ebebcae16fb0ce7ab4af456992bbd8d22fced /lib/Index/EntityImpl.h | |
parent | 4981926bf654fe5a2c3893f24ca44106b217e71e (diff) | |
download | FreeBSD-src-9092c3e0fa01f3139b016d05d267a89e3b07747a.zip FreeBSD-src-9092c3e0fa01f3139b016d05d267a89e3b07747a.tar.gz |
Update clang to r84119.
Diffstat (limited to 'lib/Index/EntityImpl.h')
-rw-r--r-- | lib/Index/EntityImpl.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/Index/EntityImpl.h b/lib/Index/EntityImpl.h new file mode 100644 index 0000000..cbce934 --- /dev/null +++ b/lib/Index/EntityImpl.h @@ -0,0 +1,70 @@ +//===--- EntityImpl.h - Internal Entity 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 Entity class +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_INDEX_ENTITYIMPL_H +#define LLVM_CLANG_INDEX_ENTITYIMPL_H + +#include "clang/Index/Entity.h" +#include "clang/AST/DeclarationName.h" +#include "llvm/ADT/FoldingSet.h" +#include "llvm/ADT/StringSet.h" + +namespace clang { + +namespace idx { + class ProgramImpl; + +class EntityImpl : public llvm::FoldingSetNode { + Entity Parent; + DeclarationName Name; + + /// \brief Identifier namespace. + unsigned IdNS; + + /// \brief If Name is a selector, this keeps track whether it's for an + /// instance method. + bool IsObjCInstanceMethod; + +public: + EntityImpl(Entity parent, DeclarationName name, unsigned idNS, + bool isObjCInstanceMethod) + : Parent(parent), Name(name), IdNS(idNS), + IsObjCInstanceMethod(isObjCInstanceMethod) { } + + /// \brief Find the Decl that can be referred to by this entity. + Decl *getDecl(ASTContext &AST); + + /// \brief Get an Entity associated with the given Decl. + /// \returns Null if an Entity cannot refer to this Decl. + static Entity get(Decl *D, Program &Prog, ProgramImpl &ProgImpl); + + std::string getPrintableName(); + + void Profile(llvm::FoldingSetNodeID &ID) const { + Profile(ID, Parent, Name, IdNS, IsObjCInstanceMethod); + } + static void Profile(llvm::FoldingSetNodeID &ID, Entity Parent, + DeclarationName Name, unsigned IdNS, + bool isObjCInstanceMethod) { + ID.AddPointer(Parent.getAsOpaquePtr()); + ID.AddPointer(Name.getAsOpaquePtr()); + ID.AddInteger(IdNS); + ID.AddBoolean(isObjCInstanceMethod); + } +}; + +} // namespace idx + +} // namespace clang + +#endif |