clang
20.0.0git
include
clang
AST
ParentMap.h
Go to the documentation of this file.
1
//===--- ParentMap.h - Mappings from Stmts to their Parents -----*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file defines the ParentMap class.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_CLANG_AST_PARENTMAP_H
14
#define LLVM_CLANG_AST_PARENTMAP_H
15
16
namespace
clang
{
17
class
Stmt;
18
class
Expr;
19
20
class
ParentMap
{
21
void
* Impl;
22
public
:
23
ParentMap
(
Stmt
* ASTRoot);
24
~ParentMap
();
25
26
/// Adds and/or updates the parent/child-relations of the complete
27
/// stmt tree of S. All children of S including indirect descendants are
28
/// visited and updated or inserted but not the parents of S.
29
void
addStmt
(
Stmt
* S);
30
31
/// Manually sets the parent of \p S to \p Parent.
32
///
33
/// If \p S is already in the map, this method will update the mapping.
34
void
setParent
(
const
Stmt
*S,
const
Stmt
*
Parent
);
35
36
Stmt
*
getParent
(
Stmt
*)
const
;
37
Stmt
*
getParentIgnoreParens
(