diff options
| author | Ed Schouten <ed@FreeBSD.org> | 2009-06-02 17:58:47 +0000 |
|---|---|---|
| committer | Ed Schouten <ed@FreeBSD.org> | 2009-06-02 17:58:47 +0000 |
| commit | ec2b103c267a06a66e926f62cd96767b280f5cf5 (patch) | |
| tree | ce7d964cbb5e39695b71481698f10cb099c23d4a /include/clang/AST/ParentMap.h | |
Notes
Diffstat (limited to 'include/clang/AST/ParentMap.h')
| -rw-r--r-- | include/clang/AST/ParentMap.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/include/clang/AST/ParentMap.h b/include/clang/AST/ParentMap.h new file mode 100644 index 0000000000000..c669991ccc088 --- /dev/null +++ b/include/clang/AST/ParentMap.h @@ -0,0 +1,50 @@ +//===--- ParentMap.h - Mappings from Stmts to their Parents -----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the ParentMap class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_PARENTMAP_H +#define LLVM_CLANG_PARENTMAP_H + +namespace clang { +class Stmt; +class Expr; + +class ParentMap { + void* Impl; +public: + ParentMap(Stmt* ASTRoot); + ~ParentMap(); + + Stmt *getParent(Stmt*) const; + Stmt *getParentIgnoreParens(Stmt *) const; + + const Stmt *getParent(const Stmt* S) const { + return getParent(const_cast<Stmt*>(S)); + } + + const Stmt *getParentIgnoreParens(const Stmt *S) const { + return getParentIgnoreParens(const_cast<Stmt*>(S)); + } + + bool hasParent(Stmt* S) const { + return getParent(S) != 0; + } + + bool isConsumedExpr(Expr *E) const; + + bool isConsumedExpr(const Expr *E) const { + return isConsumedExpr(const_cast<Expr*>(E)); + } +}; + +} // end clang namespace +#endif |
