/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/AST/ASTTypeTraits.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===--- ASTTypeTraits.h ----------------------------------------*- 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 | | // Provides a dynamic type identifier and a dynamically typed node container |
10 | | // that can be used to store an AST base node at runtime in the same storage in |
11 | | // a type safe way. |
12 | | // |
13 | | //===----------------------------------------------------------------------===// |
14 | | |
15 | | #ifndef LLVM_CLANG_AST_ASTTYPETRAITS_H |
16 | | #define LLVM_CLANG_AST_ASTTYPETRAITS_H |
17 | | |
18 | | #include "clang/AST/ASTFwd.h" |
19 | | #include "clang/AST/DeclCXX.h" |
20 | | #include "clang/AST/LambdaCapture.h" |
21 | | #include "clang/AST/NestedNameSpecifier.h" |
22 | | #include "clang/AST/TemplateBase.h" |
23 | | #include "clang/AST/TypeLoc.h" |
24 | | #include "clang/Basic/LLVM.h" |
25 | | #include "llvm/ADT/DenseMapInfo.h" |
26 | | #include "llvm/Support/AlignOf.h" |
27 | | |
28 | | namespace llvm { |
29 | | class raw_ostream; |
30 | | } // namespace llvm |
31 | | |
32 | | namespace clang { |
33 | | |
34 | | struct PrintingPolicy; |
35 | | |
36 | | /// Defines how we descend a level in the AST when we pass |
37 | | /// through expressions. |
38 | | enum TraversalKind { |
39 | | /// Will traverse all child nodes. |
40 | | TK_AsIs, |
41 | | |
42 | | /// Ignore AST nodes not written in the source |
43 | | TK_IgnoreUnlessSpelledInSource |
44 | | }; |
45 | | |
46 | | /// Kind identifier. |
47 | | /// |
48 | | /// It can be constructed from any node kind and allows for runtime type |
49 | | /// hierarchy checks. |
50 | | /// Use getFromNodeKind<T>() to construct them. |
51 | | class ASTNodeKind { |
52 | | public: |
53 | | /// Empty identifier. It matches nothing. |
54 | 31.8M | ASTNodeKind() : KindId(NKI_None) {} |
55 | | |
56 | | /// Construct an identifier for T. |
57 | | template <class T> |
58 | 15.7M | static ASTNodeKind getFromNodeKind() { |
59 | 15.7M | return ASTNodeKind(KindToKindId<T>::Id); |
60 | 15.7M | } clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::QualType>() Line | Count | Source | 58 | 1.39M | static ASTNodeKind getFromNodeKind() { | 59 | 1.39M | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.39M | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeLoc>() Line | Count | Source | 58 | 3.87M | static ASTNodeKind getFromNodeKind() { | 59 | 3.87M | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 3.87M | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifierLoc>() Line | Count | Source | 58 | 1.45M | static ASTNodeKind getFromNodeKind() { | 59 | 1.45M | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.45M | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Stmt>() Line | Count | Source | 58 | 1.78M | static ASTNodeKind getFromNodeKind() { | 59 | 1.78M | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.78M | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgument>() Line | Count | Source | 58 | 15.5k | static ASTNodeKind getFromNodeKind() { | 59 | 15.5k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 15.5k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgumentLoc>() Line | Count | Source | 58 | 1.11k | static ASTNodeKind getFromNodeKind() { | 59 | 1.11k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.11k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateName>() Line | Count | Source | 58 | 73 | static ASTNodeKind getFromNodeKind() { | 59 | 73 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 73 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifier>() Line | Count | Source | 58 | 4.22k | static ASTNodeKind getFromNodeKind() { | 59 | 4.22k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 4.22k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Type>() Line | Count | Source | 58 | 701k | static ASTNodeKind getFromNodeKind() { | 59 | 701k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 701k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Attr>() Line | Count | Source | 58 | 1.49k | static ASTNodeKind getFromNodeKind() { | 59 | 1.49k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.49k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCtorInitializer>() Line | Count | Source | 58 | 1.47k | static ASTNodeKind getFromNodeKind() { | 59 | 1.47k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.47k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPClause>() Line | Count | Source | 58 | 146 | static ASTNodeKind getFromNodeKind() { | 59 | 146 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 146 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBaseSpecifier>() Line | Count | Source | 58 | 1.60k | static ASTNodeKind getFromNodeKind() { | 59 | 1.60k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.60k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclStmt>() Line | Count | Source | 58 | 25.1k | static ASTNodeKind getFromNodeKind() { | 59 | 25.1k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 25.1k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXForRangeStmt>() Line | Count | Source | 58 | 3.30k | static ASTNodeKind getFromNodeKind() { | 59 | 3.30k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 3.30k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VarDecl>() Line | Count | Source | 58 | 215k | static ASTNodeKind getFromNodeKind() { | 59 | 215k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 215k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMethodDecl>() Line | Count | Source | 58 | 57.2k | static ASTNodeKind getFromNodeKind() { | 59 | 57.2k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 57.2k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRecordDecl>() Line | Count | Source | 58 | 57.4k | static ASTNodeKind getFromNodeKind() { | 59 | 57.4k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 57.4k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LambdaExpr>() Line | Count | Source | 58 | 3.38k | static ASTNodeKind getFromNodeKind() { | 59 | 3.38k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 3.38k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionTemplateDecl>() Line | Count | Source | 58 | 8.46k | static ASTNodeKind getFromNodeKind() { | 59 | 8.46k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 8.46k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Expr>() Line | Count | Source | 58 | 2.62M | static ASTNodeKind getFromNodeKind() { | 59 | 2.62M | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.62M | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Decl>() Line | Count | Source | 58 | 2.21M | static ASTNodeKind getFromNodeKind() { | 59 | 2.21M | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.21M | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCProtocolLoc>() Line | Count | Source | 58 | 12 | static ASTNodeKind getFromNodeKind() { | 59 | 12 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 12 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundStmt>() Line | Count | Source | 58 | 4.43k | static ASTNodeKind getFromNodeKind() { | 59 | 4.43k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 4.43k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockPointerType>() Line | Count | Source | 58 | 1.43k | static ASTNodeKind getFromNodeKind() { | 59 | 1.43k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.43k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeleteExpr>() Line | Count | Source | 58 | 319 | static ASTNodeKind getFromNodeKind() { | 59 | 319 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 319 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefType>() Line | Count | Source | 58 | 1.24k | static ASTNodeKind getFromNodeKind() { | 59 | 1.24k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.24k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefDecl>() Line | Count | Source | 58 | 2.48k | static ASTNodeKind getFromNodeKind() { | 59 | 2.48k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.48k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordType>() Line | Count | Source | 58 | 6.28k | static ASTNodeKind getFromNodeKind() { | 59 | 6.28k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 6.28k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCObjectPointerType>() Line | Count | Source | 58 | 1.24k | static ASTNodeKind getFromNodeKind() { | 59 | 1.24k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.24k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAutoreleasePoolStmt>() Line | Count | Source | 58 | 2.95k | static ASTNodeKind getFromNodeKind() { | 59 | 2.95k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.95k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StringLiteral>() Line | Count | Source | 58 | 993 | static ASTNodeKind getFromNodeKind() { | 59 | 993 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 993 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PointerType>() Line | Count | Source | 58 | 2.20k | static ASTNodeKind getFromNodeKind() { | 59 | 2.20k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.20k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CStyleCastExpr>() Line | Count | Source | 58 | 226 | static ASTNodeKind getFromNodeKind() { | 59 | 226 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 226 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordDecl>() Line | Count | Source | 58 | 14.9k | static ASTNodeKind getFromNodeKind() { | 59 | 14.9k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 14.9k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConditionalOperator>() Line | Count | Source | 58 | 32.2k | static ASTNodeKind getFromNodeKind() { | 59 | 32.2k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 32.2k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarRefExpr>() Line | Count | Source | 58 | 202 | static ASTNodeKind getFromNodeKind() { | 59 | 202 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 202 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryOperator>() Line | Count | Source | 58 | 34.4k | static ASTNodeKind getFromNodeKind() { | 59 | 34.4k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 34.4k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IntegerLiteral>() Line | Count | Source | 58 | 4.54k | static ASTNodeKind getFromNodeKind() { | 59 | 4.54k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 4.54k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryOperator>() Line | Count | Source | 58 | 96.1k | static ASTNodeKind getFromNodeKind() { | 59 | 96.1k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 96.1k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GotoStmt>() Line | Count | Source | 58 | 602 | static ASTNodeKind getFromNodeKind() { | 59 | 602 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 602 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXOperatorCallExpr>() Line | Count | Source | 58 | 36.7k | static ASTNodeKind getFromNodeKind() { | 59 | 36.7k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 36.7k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReferenceType>() Line | Count | Source | 58 | 51.6k | static ASTNodeKind getFromNodeKind() { | 59 | 51.6k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 51.6k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMemberCallExpr>() Line | Count | Source | 58 | 24.4k | static ASTNodeKind getFromNodeKind() { | 59 | 24.4k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 24.4k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamedDecl>() Line | Count | Source | 58 | 180k | static ASTNodeKind getFromNodeKind() { | 59 | 180k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 180k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCInterfaceDecl>() Line | Count | Source | 58 | 9.13k | static ASTNodeKind getFromNodeKind() { | 59 | 9.13k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 9.13k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CallExpr>() Line | Count | Source | 58 | 68.1k | static ASTNodeKind getFromNodeKind() { | 59 | 68.1k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 68.1k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LambdaCapture>() Line | Count | Source | 58 | 920 | static ASTNodeKind getFromNodeKind() { | 59 | 920 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 920 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionDecl>() Line | Count | Source | 58 | 93.6k | static ASTNodeKind getFromNodeKind() { | 59 | 93.6k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 93.6k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMethodDecl>() Line | Count | Source | 58 | 2.80k | static ASTNodeKind getFromNodeKind() { | 59 | 2.80k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.80k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockDecl>() Line | Count | Source | 58 | 2.59k | static ASTNodeKind getFromNodeKind() { | 59 | 2.59k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.59k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FieldDecl>() Line | Count | Source | 58 | 4.53k | static ASTNodeKind getFromNodeKind() { | 59 | 4.53k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 4.53k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateSpecializationDecl>() Line | Count | Source | 58 | 123k | static ASTNodeKind getFromNodeKind() { | 59 | 123k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 123k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InitListExpr>() Line | Count | Source | 58 | 17.1k | static ASTNodeKind getFromNodeKind() { | 59 | 17.1k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 17.1k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ForStmt>() Line | Count | Source | 58 | 2.92k | static ASTNodeKind getFromNodeKind() { | 59 | 2.92k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.92k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DesignatedInitExpr>() Line | Count | Source | 58 | 328 | static ASTNodeKind getFromNodeKind() { | 59 | 328 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 328 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryExprOrTypeTraitExpr>() Line | Count | Source | 58 | 5.30k | static ASTNodeKind getFromNodeKind() { | 59 | 5.30k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 5.30k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDependentScopeMemberExpr>() Line | Count | Source | 58 | 1.87k | static ASTNodeKind getFromNodeKind() { | 59 | 1.87k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.87k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMessageExpr>() Line | Count | Source | 58 | 15.7k | static ASTNodeKind getFromNodeKind() { | 59 | 15.7k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 15.7k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclRefExpr>() Line | Count | Source | 58 | 75.1k | static ASTNodeKind getFromNodeKind() { | 59 | 75.1k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 75.1k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OverloadExpr>() Line | Count | Source | 58 | 41 | static ASTNodeKind getFromNodeKind() { | 59 | 41 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 41 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCatchStmt>() Line | Count | Source | 58 | 260 | static ASTNodeKind getFromNodeKind() { | 59 | 260 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 260 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructorDecl>() Line | Count | Source | 58 | 14.1k | static ASTNodeKind getFromNodeKind() { | 59 | 14.1k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 14.1k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructExpr>() Line | Count | Source | 58 | 13.4k | static ASTNodeKind getFromNodeKind() { | 59 | 13.4k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 13.4k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParmVarDecl>() Line | Count | Source | 58 | 53.2k | static ASTNodeKind getFromNodeKind() { | 59 | 53.2k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 53.2k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IfStmt>() Line | Count | Source | 58 | 3.56k | static ASTNodeKind getFromNodeKind() { | 59 | 3.56k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 3.56k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArraySubscriptExpr>() Line | Count | Source | 58 | 2.04k | static ASTNodeKind getFromNodeKind() { | 59 | 2.04k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.04k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CastExpr>() Line | Count | Source | 58 | 42.3k | static ASTNodeKind getFromNodeKind() { | 59 | 42.3k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 42.3k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExplicitCastExpr>() Line | Count | Source | 58 | 3.53k | static ASTNodeKind getFromNodeKind() { | 59 | 3.53k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 3.53k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitCastExpr>() Line | Count | Source | 58 | 179k | static ASTNodeKind getFromNodeKind() { | 59 | 179k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 179k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagDecl>() Line | Count | Source | 58 | 549 | static ASTNodeKind getFromNodeKind() { | 59 | 549 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 549 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AbstractConditionalOperator>() Line | Count | Source | 58 | 17.3k | static ASTNodeKind getFromNodeKind() { | 59 | 17.3k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 17.3k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberExpr>() Line | Count | Source | 58 | 4.64k | static ASTNodeKind getFromNodeKind() { | 59 | 4.64k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 4.64k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BaseUsingDecl>() Line | Count | Source | 58 | 65 | static ASTNodeKind getFromNodeKind() { | 59 | 65 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 65 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingShadowDecl>() Line | Count | Source | 58 | 3.79k | static ASTNodeKind getFromNodeKind() { | 59 | 3.79k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 3.79k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::QualifiedTypeLoc>() Line | Count | Source | 58 | 227 | static ASTNodeKind getFromNodeKind() { | 59 | 227 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 227 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PointerTypeLoc>() Line | Count | Source | 58 | 199 | static ASTNodeKind getFromNodeKind() { | 59 | 199 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 199 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReferenceTypeLoc>() Line | Count | Source | 58 | 200 | static ASTNodeKind getFromNodeKind() { | 59 | 200 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 200 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateSpecializationTypeLoc>() Line | Count | Source | 58 | 242 | static ASTNodeKind getFromNodeKind() { | 59 | 242 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 242 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ElaboratedTypeLoc>() Line | Count | Source | 58 | 260 | static ASTNodeKind getFromNodeKind() { | 59 | 260 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 260 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VariableArrayType>() Line | Count | Source | 58 | 1.20k | static ASTNodeKind getFromNodeKind() { | 59 | 1.20k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.20k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ElaboratedType>() Line | Count | Source | 58 | 213 | static ASTNodeKind getFromNodeKind() { | 59 | 213 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 213 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecayedType>() Line | Count | Source | 58 | 144 | static ASTNodeKind getFromNodeKind() { | 59 | 144 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 144 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchStmt>() Line | Count | Source | 58 | 926 | static ASTNodeKind getFromNodeKind() { | 59 | 926 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 926 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceDecl>() Line | Count | Source | 58 | 437 | static ASTNodeKind getFromNodeKind() { | 59 | 437 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 437 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CaseStmt>() Line | Count | Source | 58 | 133 | static ASTNodeKind getFromNodeKind() { | 59 | 133 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 133 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReturnStmt>() Line | Count | Source | 58 | 2.38k | static ASTNodeKind getFromNodeKind() { | 59 | 2.38k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.38k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BindingDecl>() Line | Count | Source | 58 | 243 | static ASTNodeKind getFromNodeKind() { | 59 | 243 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 243 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecompositionDecl>() Line | Count | Source | 58 | 129 | static ASTNodeKind getFromNodeKind() { | 59 | 129 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 129 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNewExpr>() Line | Count | Source | 58 | 305 | static ASTNodeKind getFromNodeKind() { | 59 | 305 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 305 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumDecl>() Line | Count | Source | 58 | 3.40k | static ASTNodeKind getFromNodeKind() { | 59 | 3.40k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 3.40k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPExecutableDirective>() Line | Count | Source | 58 | 1.15k | static ASTNodeKind getFromNodeKind() { | 59 | 1.15k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.15k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPDefaultClause>() Line | Count | Source | 58 | 393 | static ASTNodeKind getFromNodeKind() { | 59 | 393 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 393 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TranslationUnitDecl>() Line | Count | Source | 58 | 2.73k | static ASTNodeKind getFromNodeKind() { | 59 | 2.73k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 2.73k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThisExpr>() Line | Count | Source | 58 | 8.29k | static ASTNodeKind getFromNodeKind() { | 59 | 8.29k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 8.29k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GNUNullExpr>() Line | Count | Source | 58 | 151 | static ASTNodeKind getFromNodeKind() { | 59 | 151 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 151 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNullPtrLiteralExpr>() Line | Count | Source | 58 | 874 | static ASTNodeKind getFromNodeKind() { | 59 | 874 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 874 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FriendDecl>() Line | Count | Source | 58 | 761 | static ASTNodeKind getFromNodeKind() { | 59 | 761 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 761 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefNameDecl>() Line | Count | Source | 58 | 1.49k | static ASTNodeKind getFromNodeKind() { | 59 | 1.49k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.49k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ValueDecl>() Line | Count | Source | 58 | 1.20k | static ASTNodeKind getFromNodeKind() { | 59 | 1.20k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.20k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CharacterLiteral>() Line | Count | Source | 58 | 278 | static ASTNodeKind getFromNodeKind() { | 59 | 278 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 278 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBoolLiteralExpr>() Line | Count | Source | 58 | 707 | static ASTNodeKind getFromNodeKind() { | 59 | 707 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 707 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FloatingLiteral>() Line | Count | Source | 58 | 677 | static ASTNodeKind getFromNodeKind() { | 59 | 677 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 677 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AccessSpecDecl>() Line | Count | Source | 58 | 190 | static ASTNodeKind getFromNodeKind() { | 59 | 190 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 190 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AddrLabelExpr>() Line | Count | Source | 58 | 121 | static ASTNodeKind getFromNodeKind() { | 59 | 121 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 121 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXUnresolvedConstructExpr>() Line | Count | Source | 58 | 503 | static ASTNodeKind getFromNodeKind() { | 59 | 503 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 503 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArrayType>() Line | Count | Source | 58 | 908 | static ASTNodeKind getFromNodeKind() { | 59 | 908 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 908 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AsmStmt>() Line | Count | Source | 58 | 82 | static ASTNodeKind getFromNodeKind() { | 59 | 82 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 82 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicExpr>() Line | Count | Source | 58 | 124 | static ASTNodeKind getFromNodeKind() { | 59 | 124 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 124 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicType>() Line | Count | Source | 58 | 198 | static ASTNodeKind getFromNodeKind() { | 59 | 198 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 198 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AutoType>() Line | Count | Source | 58 | 114 | static ASTNodeKind getFromNodeKind() { | 59 | 114 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 114 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryConditionalOperator>() Line | Count | Source | 58 | 28.3k | static ASTNodeKind getFromNodeKind() { | 59 | 28.3k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 28.3k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRewrittenBinaryOperator>() Line | Count | Source | 58 | 4.11k | static ASTNodeKind getFromNodeKind() { | 59 | 4.11k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 4.11k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockExpr>() Line | Count | Source | 58 | 82 | static ASTNodeKind getFromNodeKind() { | 59 | 82 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 82 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BreakStmt>() Line | Count | Source | 58 | 82 | static ASTNodeKind getFromNodeKind() { | 59 | 82 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 82 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BuiltinType>() Line | Count | Source | 58 | 598 | static ASTNodeKind getFromNodeKind() { | 59 | 598 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 598 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ChooseExpr>() Line | Count | Source | 58 | 134 | static ASTNodeKind getFromNodeKind() { | 59 | 134 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 134 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateDecl>() Line | Count | Source | 58 | 6.13k | static ASTNodeKind getFromNodeKind() { | 59 | 6.13k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 6.13k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplatePartialSpecializationDecl>() Line | Count | Source | 58 | 148 | static ASTNodeKind getFromNodeKind() { | 59 | 148 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 148 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ComplexType>() Line | Count | Source | 58 | 187 | static ASTNodeKind getFromNodeKind() { | 59 | 187 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 187 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundLiteralExpr>() Line | Count | Source | 58 | 114 | static ASTNodeKind getFromNodeKind() { | 59 | 114 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 114 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CoawaitExpr>() Line | Count | Source | 58 | 47 | static ASTNodeKind getFromNodeKind() { | 59 | 47 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 47 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantArrayType>() Line | Count | Source | 58 | 326 | static ASTNodeKind getFromNodeKind() { | 59 | 326 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 326 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantExpr>() Line | Count | Source | 58 | 80 | static ASTNodeKind getFromNodeKind() { | 59 | 80 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 80 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ContinueStmt>() Line | Count | Source | 58 | 82 | static ASTNodeKind getFromNodeKind() { | 59 | 82 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 82 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CoreturnStmt>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CoyieldExpr>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CUDAKernelCallExpr>() Line | Count | Source | 58 | 46 | static ASTNodeKind getFromNodeKind() { | 59 | 46 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 46 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBindTemporaryExpr>() Line | Count | Source | 58 | 70 | static ASTNodeKind getFromNodeKind() { | 59 | 70 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 70 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstCastExpr>() Line | Count | Source | 58 | 40 | static ASTNodeKind getFromNodeKind() { | 59 | 40 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 40 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConversionDecl>() Line | Count | Source | 58 | 153 | static ASTNodeKind getFromNodeKind() { | 59 | 153 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 153 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeductionGuideDecl>() Line | Count | Source | 58 | 440 | static ASTNodeKind getFromNodeKind() { | 59 | 440 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 440 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDefaultArgExpr>() Line | Count | Source | 58 | 79 | static ASTNodeKind getFromNodeKind() { | 59 | 79 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 79 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDestructorDecl>() Line | Count | Source | 58 | 140 | static ASTNodeKind getFromNodeKind() { | 59 | 140 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 140 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDynamicCastExpr>() Line | Count | Source | 58 | 70 | static ASTNodeKind getFromNodeKind() { | 59 | 70 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 70 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXFunctionalCastExpr>() Line | Count | Source | 58 | 166 | static ASTNodeKind getFromNodeKind() { | 59 | 166 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 166 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNoexceptExpr>() Line | Count | Source | 58 | 1.07k | static ASTNodeKind getFromNodeKind() { | 59 | 1.07k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.07k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXReinterpretCastExpr>() Line | Count | Source | 58 | 190 | static ASTNodeKind getFromNodeKind() { | 59 | 190 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 190 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStaticCastExpr>() Line | Count | Source | 58 | 192 | static ASTNodeKind getFromNodeKind() { | 59 | 192 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 192 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStdInitializerListExpr>() Line | Count | Source | 58 | 136 | static ASTNodeKind getFromNodeKind() { | 59 | 136 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 136 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTemporaryObjectExpr>() Line | Count | Source | 58 | 100 | static ASTNodeKind getFromNodeKind() { | 59 | 100 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 100 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThrowExpr>() Line | Count | Source | 58 | 160 | static ASTNodeKind getFromNodeKind() { | 59 | 160 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 160 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTryStmt>() Line | Count | Source | 58 | 70 | static ASTNodeKind getFromNodeKind() { | 59 | 70 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 70 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclaratorDecl>() Line | Count | Source | 58 | 203 | static ASTNodeKind getFromNodeKind() { | 59 | 203 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 203 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecltypeType>() Line | Count | Source | 58 | 111 | static ASTNodeKind getFromNodeKind() { | 59 | 111 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 111 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeducedTemplateSpecializationType>() Line | Count | Source | 58 | 69 | static ASTNodeKind getFromNodeKind() { | 59 | 69 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 69 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DefaultStmt>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DependentCoawaitExpr>() Line | Count | Source | 58 | 40 | static ASTNodeKind getFromNodeKind() { | 59 | 40 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 40 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DependentSizedArrayType>() Line | Count | Source | 58 | 112 | static ASTNodeKind getFromNodeKind() { | 59 | 112 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 112 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DoStmt>() Line | Count | Source | 58 | 210 | static ASTNodeKind getFromNodeKind() { | 59 | 210 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 210 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingType>() Line | Count | Source | 58 | 92 | static ASTNodeKind getFromNodeKind() { | 59 | 92 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 92 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumConstantDecl>() Line | Count | Source | 58 | 197 | static ASTNodeKind getFromNodeKind() { | 59 | 197 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 197 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumType>() Line | Count | Source | 58 | 157 | static ASTNodeKind getFromNodeKind() { | 59 | 157 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 157 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExprWithCleanups>() Line | Count | Source | 58 | 116 | static ASTNodeKind getFromNodeKind() { | 59 | 116 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 116 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FixedPointLiteral>() Line | Count | Source | 58 | 64 | static ASTNodeKind getFromNodeKind() { | 59 | 64 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 64 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchCase>() Line | Count | Source | 58 | 244 | static ASTNodeKind getFromNodeKind() { | 59 | 244 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 244 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateSpecializationType>() Line | Count | Source | 58 | 340 | static ASTNodeKind getFromNodeKind() { | 59 | 340 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 340 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionProtoType>() Line | Count | Source | 58 | 516 | static ASTNodeKind getFromNodeKind() { | 59 | 516 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 516 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionType>() Line | Count | Source | 58 | 322 | static ASTNodeKind getFromNodeKind() { | 59 | 322 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 322 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GenericSelectionExpr>() Line | Count | Source | 58 | 488 | static ASTNodeKind getFromNodeKind() { | 59 | 488 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 488 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StmtExpr>() Line | Count | Source | 58 | 138 | static ASTNodeKind getFromNodeKind() { | 59 | 138 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 138 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::WhileStmt>() Line | Count | Source | 58 | 224 | static ASTNodeKind getFromNodeKind() { | 59 | 224 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 224 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InjectedClassNameType>() Line | Count | Source | 58 | 67 | static ASTNodeKind getFromNodeKind() { | 59 | 67 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 67 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelStmt>() Line | Count | Source | 58 | 125 | static ASTNodeKind getFromNodeKind() { | 59 | 125 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 125 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagType>() Line | Count | Source | 58 | 61 | static ASTNodeKind getFromNodeKind() { | 59 | 61 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 61 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmType>() Line | Count | Source | 58 | 1.05k | static ASTNodeKind getFromNodeKind() { | 59 | 1.05k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.05k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingType>() Line | Count | Source | 58 | 21 | static ASTNodeKind getFromNodeKind() { | 59 | 21 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 21 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedMemberExpr>() Line | Count | Source | 58 | 1.52k | static ASTNodeKind getFromNodeKind() { | 59 | 1.52k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.52k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstTemplateTypeParmType>() Line | Count | Source | 58 | 127 | static ASTNodeKind getFromNodeKind() { | 59 | 127 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 127 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OpaqueValueExpr>() Line | Count | Source | 58 | 134 | static ASTNodeKind getFromNodeKind() { | 59 | 134 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 134 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCPropertyDecl>() Line | Count | Source | 58 | 69 | static ASTNodeKind getFromNodeKind() { | 59 | 69 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 69 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImaginaryLiteral>() Line | Count | Source | 58 | 52 | static ASTNodeKind getFromNodeKind() { | 59 | 52 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 52 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitValueInitExpr>() Line | Count | Source | 58 | 56 | static ASTNodeKind getFromNodeKind() { | 59 | 56 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 56 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IncompleteArrayType>() Line | Count | Source | 58 | 166 | static ASTNodeKind getFromNodeKind() { | 59 | 166 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 166 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IndirectFieldDecl>() Line | Count | Source | 58 | 56 | static ASTNodeKind getFromNodeKind() { | 59 | 56 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 56 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenType>() Line | Count | Source | 58 | 232 | static ASTNodeKind getFromNodeKind() { | 59 | 232 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 232 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LValueReferenceType>() Line | Count | Source | 58 | 196 | static ASTNodeKind getFromNodeKind() { | 59 | 196 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 196 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelDecl>() Line | Count | Source | 58 | 84 | static ASTNodeKind getFromNodeKind() { | 59 | 84 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 84 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LinkageSpecDecl>() Line | Count | Source | 58 | 100 | static ASTNodeKind getFromNodeKind() { | 59 | 100 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 100 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MaterializeTemporaryExpr>() Line | Count | Source | 58 | 94 | static ASTNodeKind getFromNodeKind() { | 59 | 94 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 94 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberPointerType>() Line | Count | Source | 58 | 187 | static ASTNodeKind getFromNodeKind() { | 59 | 187 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 187 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceAliasDecl>() Line | Count | Source | 58 | 60 | static ASTNodeKind getFromNodeKind() { | 59 | 60 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 60 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NonTypeTemplateParmDecl>() Line | Count | Source | 58 | 124 | static ASTNodeKind getFromNodeKind() { | 59 | 124 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 124 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NullStmt>() Line | Count | Source | 58 | 208 | static ASTNodeKind getFromNodeKind() { | 59 | 208 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 208 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtCatchStmt>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryDecl>() Line | Count | Source | 58 | 203 | static ASTNodeKind getFromNodeKind() { | 59 | 203 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 203 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryImplDecl>() Line | Count | Source | 58 | 42 | static ASTNodeKind getFromNodeKind() { | 59 | 42 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 42 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtFinallyStmt>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCImplementationDecl>() Line | Count | Source | 58 | 42 | static ASTNodeKind getFromNodeKind() { | 59 | 42 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 42 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarDecl>() Line | Count | Source | 58 | 42 | static ASTNodeKind getFromNodeKind() { | 59 | 42 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 42 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCProtocolDecl>() Line | Count | Source | 58 | 42 | static ASTNodeKind getFromNodeKind() { | 59 | 42 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 42 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCStringLiteral>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtThrowStmt>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtTryStmt>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenExpr>() Line | Count | Source | 58 | 216 | static ASTNodeKind getFromNodeKind() { | 59 | 216 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 216 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenListExpr>() Line | Count | Source | 58 | 414 | static ASTNodeKind getFromNodeKind() { | 59 | 414 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 414 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PredefinedExpr>() Line | Count | Source | 58 | 202 | static ASTNodeKind getFromNodeKind() { | 59 | 202 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 202 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RValueReferenceType>() Line | Count | Source | 58 | 196 | static ASTNodeKind getFromNodeKind() { | 59 | 196 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 196 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StaticAssertDecl>() Line | Count | Source | 58 | 110 | static ASTNodeKind getFromNodeKind() { | 59 | 110 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 110 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstNonTypeTemplateParmExpr>() Line | Count | Source | 58 | 102 | static ASTNodeKind getFromNodeKind() { | 59 | 102 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 102 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTemplateParmDecl>() Line | Count | Source | 58 | 122 | static ASTNodeKind getFromNodeKind() { | 59 | 122 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 122 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmDecl>() Line | Count | Source | 58 | 1.18k | static ASTNodeKind getFromNodeKind() { | 59 | 1.18k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.18k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasDecl>() Line | Count | Source | 58 | 132 | static ASTNodeKind getFromNodeKind() { | 59 | 132 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 132 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasTemplateDecl>() Line | Count | Source | 58 | 107 | static ASTNodeKind getFromNodeKind() { | 59 | 107 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 107 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryTransformType>() Line | Count | Source | 58 | 43 | static ASTNodeKind getFromNodeKind() { | 59 | 43 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 43 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedLookupExpr>() Line | Count | Source | 58 | 1.07k | static ASTNodeKind getFromNodeKind() { | 59 | 1.07k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.07k | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingTypenameDecl>() Line | Count | Source | 58 | 42 | static ASTNodeKind getFromNodeKind() { | 59 | 42 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 42 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingValueDecl>() Line | Count | Source | 58 | 45 | static ASTNodeKind getFromNodeKind() { | 59 | 45 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 45 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UserDefinedLiteral>() Line | Count | Source | 58 | 64 | static ASTNodeKind getFromNodeKind() { | 59 | 64 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 64 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDecl>() Line | Count | Source | 58 | 334 | static ASTNodeKind getFromNodeKind() { | 59 | 334 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 334 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingEnumDecl>() Line | Count | Source | 58 | 58 | static ASTNodeKind getFromNodeKind() { | 59 | 58 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 58 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDirectiveDecl>() Line | Count | Source | 58 | 103 | static ASTNodeKind getFromNodeKind() { | 59 | 103 | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 103 | } |
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTypeidExpr>() Line | Count | Source | 58 | 1.37k | static ASTNodeKind getFromNodeKind() { | 59 | 1.37k | return ASTNodeKind(KindToKindId<T>::Id); | 60 | 1.37k | } |
|
61 | | |
62 | | /// \{ |
63 | | /// Construct an identifier for the dynamic type of the node |
64 | | static ASTNodeKind getFromNode(const Decl &D); |
65 | | static ASTNodeKind getFromNode(const Stmt &S); |
66 | | static ASTNodeKind getFromNode(const Type &T); |
67 | | static ASTNodeKind getFromNode(const TypeLoc &T); |
68 | | static ASTNodeKind getFromNode(const LambdaCapture &L); |
69 | | static ASTNodeKind getFromNode(const OMPClause &C); |
70 | | static ASTNodeKind getFromNode(const Attr &A); |
71 | | /// \} |
72 | | |
73 | | /// Returns \c true if \c this and \c Other represent the same kind. |
74 | 17.4M | bool isSame(ASTNodeKind Other) const { |
75 | 17.4M | return KindId != NKI_None && KindId == Other.KindId17.4M ; |
76 | 17.4M | } |
77 | | |
78 | | /// Returns \c true only for the default \c ASTNodeKind() |
79 | 650 | bool isNone() const { return KindId == NKI_None; } |
80 | | |
81 | | /// Returns \c true if \c this is a base kind of (or same as) \c Other. |
82 | | /// \param Distance If non-null, used to return the distance between \c this |
83 | | /// and \c Other in the class hierarchy. |
84 | | bool isBaseOf(ASTNodeKind Other, unsigned *Distance = nullptr) const; |
85 | | |
86 | | /// String representation of the kind. |
87 | | StringRef asStringRef() const; |
88 | | |
89 | | /// Strict weak ordering for ASTNodeKind. |
90 | 691k | bool operator<(const ASTNodeKind &Other) const { |
91 | 691k | return KindId < Other.KindId; |
92 | 691k | } |
93 | | |
94 | | /// Return the most derived type between \p Kind1 and \p Kind2. |
95 | | /// |
96 | | /// Return ASTNodeKind() if they are not related. |
97 | | static ASTNodeKind getMostDerivedType(ASTNodeKind Kind1, ASTNodeKind Kind2); |
98 | | |
99 | | /// Return the most derived common ancestor between Kind1 and Kind2. |
100 | | /// |
101 | | /// Return ASTNodeKind() if they are not related. |
102 | | static ASTNodeKind getMostDerivedCommonAncestor(ASTNodeKind Kind1, |
103 | | ASTNodeKind Kind2); |
104 | | |
105 | | ASTNodeKind getCladeKind() const; |
106 | | |
107 | | /// Hooks for using ASTNodeKind as a key in a DenseMap. |
108 | | struct DenseMapInfo { |
109 | | // ASTNodeKind() is a good empty key because it is represented as a 0. |
110 | 22.0M | static inline ASTNodeKind getEmptyKey() { return ASTNodeKind(); } |
111 | | // NKI_NumberOfKinds is not a valid value, so it is good for a |
112 | | // tombstone key. |
113 | 21.0M | static inline ASTNodeKind getTombstoneKey() { |
114 | 21.0M | return ASTNodeKind(NKI_NumberOfKinds); |
115 | 21.0M | } |
116 | 1.10M | static unsigned getHashValue(const ASTNodeKind &Val) { return Val.KindId; } |
117 | 44.1M | static bool isEqual(const ASTNodeKind &LHS, const ASTNodeKind &RHS) { |
118 | 44.1M | return LHS.KindId == RHS.KindId; |
119 | 44.1M | } |
120 | | }; |
121 | | |
122 | | /// Check if the given ASTNodeKind identifies a type that offers pointer |
123 | | /// identity. This is useful for the fast path in DynTypedNode. |
124 | 1.44M | bool hasPointerIdentity() const { |
125 | 1.44M | return KindId > NKI_LastKindWithoutPointerIdentity; |
126 | 1.44M | } |
127 | | |
128 | | private: |
129 | | /// Kind ids. |
130 | | /// |
131 | | /// Includes all possible base and derived kinds. |
132 | | enum NodeKindId { |
133 | | NKI_None, |
134 | | NKI_TemplateArgument, |
135 | | NKI_TemplateArgumentLoc, |
136 | | NKI_LambdaCapture, |
137 | | NKI_TemplateName, |
138 | | NKI_NestedNameSpecifierLoc, |
139 | | NKI_QualType, |
140 | | #define TYPELOC(CLASS, PARENT) NKI_##CLASS##TypeLoc, |
141 | | #include "clang/AST/TypeLocNodes.def" |
142 | | NKI_TypeLoc, |
143 | | NKI_LastKindWithoutPointerIdentity = NKI_TypeLoc, |
144 | | NKI_CXXBaseSpecifier, |
145 | | NKI_CXXCtorInitializer, |
146 | | NKI_NestedNameSpecifier, |
147 | | NKI_Decl, |
148 | | #define DECL(DERIVED, BASE) NKI_##DERIVED##Decl, |
149 | | #include "clang/AST/DeclNodes.inc" |
150 | | NKI_Stmt, |
151 | | #define STMT(DERIVED, BASE) NKI_##DERIVED, |
152 | | #include "clang/AST/StmtNodes.inc" |
153 | | NKI_Type, |
154 | | #define TYPE(DERIVED, BASE) NKI_##DERIVED##Type, |
155 | | #include "clang/AST/TypeNodes.inc" |
156 | | NKI_OMPClause, |
157 | | #define GEN_CLANG_CLAUSE_CLASS |
158 | | #define CLAUSE_CLASS(Enum, Str, Class) NKI_##Class, |
159 | | #include "llvm/Frontend/OpenMP/OMP.inc" |
160 | | NKI_Attr, |
161 | | #define ATTR(A) NKI_##A##Attr, |
162 | | #include "clang/Basic/AttrList.inc" |
163 | | NKI_ObjCProtocolLoc, |
164 | | NKI_NumberOfKinds |
165 | | }; |
166 | | |
167 | | /// Use getFromNodeKind<T>() to construct the kind. |
168 | 40.5M | ASTNodeKind(NodeKindId KindId) : KindId(KindId) {} |
169 | | |
170 | | /// Returns \c true if \c Base is a base kind of (or same as) \c |
171 | | /// Derived. |
172 | | /// \param Distance If non-null, used to return the distance between \c Base |
173 | | /// and \c Derived in the class hierarchy. |
174 | | static bool isBaseOf(NodeKindId Base, NodeKindId Derived, unsigned *Distance); |
175 | | |
176 | | /// Helper meta-function to convert a kind T to its enum value. |
177 | | /// |
178 | | /// This struct is specialized below for all known kinds. |
179 | | template <class T> struct KindToKindId { |
180 | | static const NodeKindId Id = NKI_None; |
181 | | }; |
182 | | template <class T> |
183 | | struct KindToKindId<const T> : KindToKindId<T> {}; |
184 | | |
185 | | /// Per kind info. |
186 | | struct KindInfo { |
187 | | /// The id of the parent kind, or None if it has no parent. |
188 | | NodeKindId ParentId; |
189 | | /// Name of the kind. |
190 | | const char *Name; |
191 | | }; |
192 | | static const KindInfo AllKindInfo[NKI_NumberOfKinds]; |
193 | | |
194 | | NodeKindId KindId; |
195 | | }; |
196 | | |
197 | | #define KIND_TO_KIND_ID(Class) \ |
198 | | template <> struct ASTNodeKind::KindToKindId<Class> { \ |
199 | | static const NodeKindId Id = NKI_##Class; \ |
200 | | }; |
201 | | KIND_TO_KIND_ID(CXXCtorInitializer) |
202 | | KIND_TO_KIND_ID(TemplateArgument) |
203 | | KIND_TO_KIND_ID(TemplateArgumentLoc) |
204 | | KIND_TO_KIND_ID(LambdaCapture) |
205 | | KIND_TO_KIND_ID(TemplateName) |
206 | | KIND_TO_KIND_ID(NestedNameSpecifier) |
207 | | KIND_TO_KIND_ID(NestedNameSpecifierLoc) |
208 | | KIND_TO_KIND_ID(QualType) |
209 | | #define TYPELOC(CLASS, PARENT) KIND_TO_KIND_ID(CLASS##TypeLoc) |
210 | | #include "clang/AST/TypeLocNodes.def" |
211 | | KIND_TO_KIND_ID(TypeLoc) |
212 | | KIND_TO_KIND_ID(Decl) |
213 | | KIND_TO_KIND_ID(Stmt) |
214 | | KIND_TO_KIND_ID(Type) |
215 | | KIND_TO_KIND_ID(OMPClause) |
216 | | KIND_TO_KIND_ID(Attr) |
217 | | KIND_TO_KIND_ID(ObjCProtocolLoc) |
218 | | KIND_TO_KIND_ID(CXXBaseSpecifier) |
219 | | #define DECL(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Decl) |
220 | | #include "clang/AST/DeclNodes.inc" |
221 | | #define STMT(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED) |
222 | | #include "clang/AST/StmtNodes.inc" |
223 | | #define TYPE(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Type) |
224 | | #include "clang/AST/TypeNodes.inc" |
225 | | #define GEN_CLANG_CLAUSE_CLASS |
226 | | #define CLAUSE_CLASS(Enum, Str, Class) KIND_TO_KIND_ID(Class) |
227 | | #include "llvm/Frontend/OpenMP/OMP.inc" |
228 | | #define ATTR(A) KIND_TO_KIND_ID(A##Attr) |
229 | | #include "clang/Basic/AttrList.inc" |
230 | | #undef KIND_TO_KIND_ID |
231 | | |
232 | 2.10k | inline raw_ostream &operator<<(raw_ostream &OS, ASTNodeKind K) { |
233 | 2.10k | OS << K.asStringRef(); |
234 | 2.10k | return OS; |
235 | 2.10k | } |
236 | | |
237 | | /// A dynamically typed AST node container. |
238 | | /// |
239 | | /// Stores an AST node in a type safe way. This allows writing code that |
240 | | /// works with different kinds of AST nodes, despite the fact that they don't |
241 | | /// have a common base class. |
242 | | /// |
243 | | /// Use \c create(Node) to create a \c DynTypedNode from an AST node, |
244 | | /// and \c get<T>() to retrieve the node as type T if the types match. |
245 | | /// |
246 | | /// See \c ASTNodeKind for which node base types are currently supported; |
247 | | /// You can create DynTypedNodes for all nodes in the inheritance hierarchy of |
248 | | /// the supported base types. |
249 | | class DynTypedNode { |
250 | | public: |
251 | | /// Creates a \c DynTypedNode from \c Node. |
252 | | template <typename T> |
253 | 4.21M | static DynTypedNode create(const T &Node) { |
254 | 4.21M | return BaseConverter<T>::create(Node); |
255 | 4.21M | } clang::DynTypedNode clang::DynTypedNode::create<clang::Decl>(clang::Decl const&) Line | Count | Source | 253 | 1.04M | static DynTypedNode create(const T &Node) { | 254 | 1.04M | return BaseConverter<T>::create(Node); | 255 | 1.04M | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::Stmt>(clang::Stmt const&) Line | Count | Source | 253 | 639k | static DynTypedNode create(const T &Node) { | 254 | 639k | return BaseConverter<T>::create(Node); | 255 | 639k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXRewrittenBinaryOperator>(clang::CXXRewrittenBinaryOperator const&) Line | Count | Source | 253 | 52 | static DynTypedNode create(const T &Node) { | 254 | 52 | return BaseConverter<T>::create(Node); | 255 | 52 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::Expr>(clang::Expr const&) Line | Count | Source | 253 | 640k | static DynTypedNode create(const T &Node) { | 254 | 640k | return BaseConverter<T>::create(Node); | 255 | 640k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCProtocolLoc>(clang::ObjCProtocolLoc const&) Line | Count | Source | 253 | 12 | static DynTypedNode create(const T &Node) { | 254 | 12 | return BaseConverter<T>::create(Node); | 255 | 12 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::TypeLoc>(clang::TypeLoc const&) Line | Count | Source | 253 | 1.26M | static DynTypedNode create(const T &Node) { | 254 | 1.26M | return BaseConverter<T>::create(Node); | 255 | 1.26M | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifierLoc>(clang::NestedNameSpecifierLoc const&) Line | Count | Source | 253 | 457k | static DynTypedNode create(const T &Node) { | 254 | 457k | return BaseConverter<T>::create(Node); | 255 | 457k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::Attr>(clang::Attr const&) Line | Count | Source | 253 | 2.42k | static DynTypedNode create(const T &Node) { | 254 | 2.42k | return BaseConverter<T>::create(Node); | 255 | 2.42k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::TranslationUnitDecl>(clang::TranslationUnitDecl const&) Line | Count | Source | 253 | 468 | static DynTypedNode create(const T &Node) { | 254 | 468 | return BaseConverter<T>::create(Node); | 255 | 468 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::EnumConstantDecl>(clang::EnumConstantDecl const&) Line | Count | Source | 253 | 15 | static DynTypedNode create(const T &Node) { | 254 | 15 | return BaseConverter<T>::create(Node); | 255 | 15 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclRefExpr>(clang::DeclRefExpr const&) Line | Count | Source | 253 | 81 | static DynTypedNode create(const T &Node) { | 254 | 81 | return BaseConverter<T>::create(Node); | 255 | 81 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMethodDecl>(clang::CXXMethodDecl const&) Line | Count | Source | 253 | 656 | static DynTypedNode create(const T &Node) { | 254 | 656 | return BaseConverter<T>::create(Node); | 255 | 656 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CompoundStmt>(clang::CompoundStmt const&) Line | Count | Source | 253 | 540 | static DynTypedNode create(const T &Node) { | 254 | 540 | return BaseConverter<T>::create(Node); | 255 | 540 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::UnaryOperator>(clang::UnaryOperator const&) Line | Count | Source | 253 | 34 | static DynTypedNode create(const T &Node) { | 254 | 34 | return BaseConverter<T>::create(Node); | 255 | 34 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ExplicitCastExpr>(clang::ExplicitCastExpr const&) Line | Count | Source | 253 | 110 | static DynTypedNode create(const T &Node) { | 254 | 110 | return BaseConverter<T>::create(Node); | 255 | 110 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCAutoreleasePoolStmt>(clang::ObjCAutoreleasePoolStmt const&) Line | Count | Source | 253 | 25 | static DynTypedNode create(const T &Node) { | 254 | 25 | return BaseConverter<T>::create(Node); | 255 | 25 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMethodDecl>(clang::ObjCMethodDecl const&) Line | Count | Source | 253 | 18 | static DynTypedNode create(const T &Node) { | 254 | 18 | return BaseConverter<T>::create(Node); | 255 | 18 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::BlockDecl>(clang::BlockDecl const&) Line | Count | Source | 253 | 1 | static DynTypedNode create(const T &Node) { | 254 | 1 | return BaseConverter<T>::create(Node); | 255 | 1 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMessageExpr>(clang::ObjCMessageExpr const&) Line | Count | Source | 253 | 35 | static DynTypedNode create(const T &Node) { | 254 | 35 | return BaseConverter<T>::create(Node); | 255 | 35 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::InitListExpr>(clang::InitListExpr const&) Line | Count | Source | 253 | 156 | static DynTypedNode create(const T &Node) { | 254 | 156 | return BaseConverter<T>::create(Node); | 255 | 156 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCInterfaceDecl>(clang::ObjCInterfaceDecl const&) Line | Count | Source | 253 | 2.35k | static DynTypedNode create(const T &Node) { | 254 | 2.35k | return BaseConverter<T>::create(Node); | 255 | 2.35k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgumentLoc>(clang::TemplateArgumentLoc const&) Line | Count | Source | 253 | 831 | static DynTypedNode create(const T &Node) { | 254 | 831 | return BaseConverter<T>::create(Node); | 255 | 831 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ClassTemplateDecl>(clang::ClassTemplateDecl const&) Line | Count | Source | 253 | 144 | static DynTypedNode create(const T &Node) { | 254 | 144 | return BaseConverter<T>::create(Node); | 255 | 144 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::QualType>(clang::QualType const&) Line | Count | Source | 253 | 63.1k | static DynTypedNode create(const T &Node) { | 254 | 63.1k | return BaseConverter<T>::create(Node); | 255 | 63.1k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateName>(clang::TemplateName const&) Line | Count | Source | 253 | 2 | static DynTypedNode create(const T &Node) { | 254 | 2 | return BaseConverter<T>::create(Node); | 255 | 2 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::VarDecl>(clang::VarDecl const&) Line | Count | Source | 253 | 1.19k | static DynTypedNode create(const T &Node) { | 254 | 1.19k | return BaseConverter<T>::create(Node); | 255 | 1.19k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXBaseSpecifier>(clang::CXXBaseSpecifier const&) Line | Count | Source | 253 | 572 | static DynTypedNode create(const T &Node) { | 254 | 572 | return BaseConverter<T>::create(Node); | 255 | 572 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::NamedDecl>(clang::NamedDecl const&) Line | Count | Source | 253 | 6.36k | static DynTypedNode create(const T &Node) { | 254 | 6.36k | return BaseConverter<T>::create(Node); | 255 | 6.36k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::Type>(clang::Type const&) Line | Count | Source | 253 | 57.6k | static DynTypedNode create(const T &Node) { | 254 | 57.6k | return BaseConverter<T>::create(Node); | 255 | 57.6k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMemberCallExpr>(clang::CXXMemberCallExpr const&) Line | Count | Source | 253 | 188 | static DynTypedNode create(const T &Node) { | 254 | 188 | return BaseConverter<T>::create(Node); | 255 | 188 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::LambdaCapture>(clang::LambdaCapture const&) Line | Count | Source | 253 | 298 | static DynTypedNode create(const T &Node) { | 254 | 298 | return BaseConverter<T>::create(Node); | 255 | 298 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::FieldDecl>(clang::FieldDecl const&) Line | Count | Source | 253 | 225 | static DynTypedNode create(const T &Node) { | 254 | 225 | return BaseConverter<T>::create(Node); | 255 | 225 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclStmt>(clang::DeclStmt const&) Line | Count | Source | 253 | 169 | static DynTypedNode create(const T &Node) { | 254 | 169 | return BaseConverter<T>::create(Node); | 255 | 169 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXRecordDecl>(clang::CXXRecordDecl const&) Line | Count | Source | 253 | 8.57k | static DynTypedNode create(const T &Node) { | 254 | 8.57k | return BaseConverter<T>::create(Node); | 255 | 8.57k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ValueDecl>(clang::ValueDecl const&) Line | Count | Source | 253 | 75 | static DynTypedNode create(const T &Node) { | 254 | 75 | return BaseConverter<T>::create(Node); | 255 | 75 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::UsingShadowDecl>(clang::UsingShadowDecl const&) Line | Count | Source | 253 | 2.10k | static DynTypedNode create(const T &Node) { | 254 | 2.10k | return BaseConverter<T>::create(Node); | 255 | 2.10k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifier>(clang::NestedNameSpecifier const&) Line | Count | Source | 253 | 1.33k | static DynTypedNode create(const T &Node) { | 254 | 1.33k | return BaseConverter<T>::create(Node); | 255 | 1.33k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::NamespaceDecl>(clang::NamespaceDecl const&) Line | Count | Source | 253 | 85 | static DynTypedNode create(const T &Node) { | 254 | 85 | return BaseConverter<T>::create(Node); | 255 | 85 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::SwitchCase>(clang::SwitchCase const&) Line | Count | Source | 253 | 23 | static DynTypedNode create(const T &Node) { | 254 | 23 | return BaseConverter<T>::create(Node); | 255 | 23 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXCtorInitializer>(clang::CXXCtorInitializer const&) Line | Count | Source | 253 | 357 | static DynTypedNode create(const T &Node) { | 254 | 357 | return BaseConverter<T>::create(Node); | 255 | 357 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::BindingDecl>(clang::BindingDecl const&) Line | Count | Source | 253 | 14 | static DynTypedNode create(const T &Node) { | 254 | 14 | return BaseConverter<T>::create(Node); | 255 | 14 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::FunctionDecl>(clang::FunctionDecl const&) Line | Count | Source | 253 | 2.27k | static DynTypedNode create(const T &Node) { | 254 | 2.27k | return BaseConverter<T>::create(Node); | 255 | 2.27k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::OMPClause>(clang::OMPClause const&) Line | Count | Source | 253 | 420 | static DynTypedNode create(const T &Node) { | 254 | 420 | return BaseConverter<T>::create(Node); | 255 | 420 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ParmVarDecl>(clang::ParmVarDecl const&) Line | Count | Source | 253 | 699 | static DynTypedNode create(const T &Node) { | 254 | 699 | return BaseConverter<T>::create(Node); | 255 | 699 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::IntegerLiteral>(clang::IntegerLiteral const&) Line | Count | Source | 253 | 170 | static DynTypedNode create(const T &Node) { | 254 | 170 | return BaseConverter<T>::create(Node); | 255 | 170 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgument>(clang::TemplateArgument const&) Line | Count | Source | 253 | 4.19k | static DynTypedNode create(const T &Node) { | 254 | 4.19k | return BaseConverter<T>::create(Node); | 255 | 4.19k | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::CastExpr>(clang::CastExpr const&) Line | Count | Source | 253 | 42 | static DynTypedNode create(const T &Node) { | 254 | 42 | return BaseConverter<T>::create(Node); | 255 | 42 | } |
clang::DynTypedNode clang::DynTypedNode::create<clang::ParenListExpr>(clang::ParenListExpr const&) Line | Count | Source | 253 | 30 | static DynTypedNode create(const T &Node) { | 254 | 30 | return BaseConverter<T>::create(Node); | 255 | 30 | } |
|
256 | | |
257 | | /// Retrieve the stored node as type \c T. |
258 | | /// |
259 | | /// Returns NULL if the stored node does not have a type that is |
260 | | /// convertible to \c T. |
261 | | /// |
262 | | /// For types that have identity via their pointer in the AST |
263 | | /// (like \c Stmt, \c Decl, \c Type and \c NestedNameSpecifier) the returned |
264 | | /// pointer points to the referenced AST node. |
265 | | /// For other types (like \c QualType) the value is stored directly |
266 | | /// in the \c DynTypedNode, and the returned pointer points at |
267 | | /// the storage inside DynTypedNode. For those nodes, do not |
268 | | /// use the pointer outside the scope of the DynTypedNode. |
269 | 3.56M | template <typename T> const T *get() const { |
270 | 3.56M | return BaseConverter<T>::get(NodeKind, &Storage); |
271 | 3.56M | } clang::Stmt const* clang::DynTypedNode::get<clang::Stmt>() const Line | Count | Source | 269 | 794k | template <typename T> const T *get() const { | 270 | 794k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 794k | } |
clang::TemplateArgument const* clang::DynTypedNode::get<clang::TemplateArgument>() const Line | Count | Source | 269 | 33 | template <typename T> const T *get() const { | 270 | 33 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 33 | } |
clang::TemplateArgumentLoc const* clang::DynTypedNode::get<clang::TemplateArgumentLoc>() const Line | Count | Source | 269 | 29 | template <typename T> const T *get() const { | 270 | 29 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 29 | } |
clang::TemplateName const* clang::DynTypedNode::get<clang::TemplateName>() const Line | Count | Source | 269 | 8 | template <typename T> const T *get() const { | 270 | 8 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 8 | } |
clang::NestedNameSpecifier const* clang::DynTypedNode::get<clang::NestedNameSpecifier>() const Line | Count | Source | 269 | 445 | template <typename T> const T *get() const { | 270 | 445 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 445 | } |
clang::NestedNameSpecifierLoc const* clang::DynTypedNode::get<clang::NestedNameSpecifierLoc>() const Line | Count | Source | 269 | 5.63k | template <typename T> const T *get() const { | 270 | 5.63k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 5.63k | } |
clang::QualType const* clang::DynTypedNode::get<clang::QualType>() const Line | Count | Source | 269 | 299 | template <typename T> const T *get() const { | 270 | 299 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 299 | } |
clang::TypeLoc const* clang::DynTypedNode::get<clang::TypeLoc>() const Line | Count | Source | 269 | 5.55k | template <typename T> const T *get() const { | 270 | 5.55k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 5.55k | } |
clang::Type const* clang::DynTypedNode::get<clang::Type>() const Line | Count | Source | 269 | 79 | template <typename T> const T *get() const { | 270 | 79 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 79 | } |
clang::Attr const* clang::DynTypedNode::get<clang::Attr>() const Line | Count | Source | 269 | 13 | template <typename T> const T *get() const { | 270 | 13 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 13 | } |
Unexecuted instantiation: clang::ObjCProtocolLoc const* clang::DynTypedNode::get<clang::ObjCProtocolLoc>() const clang::CXXCtorInitializer const* clang::DynTypedNode::get<clang::CXXCtorInitializer>() const Line | Count | Source | 269 | 368 | template <typename T> const T *get() const { | 270 | 368 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 368 | } |
clang::OMPClause const* clang::DynTypedNode::get<clang::OMPClause>() const Line | Count | Source | 269 | 2 | template <typename T> const T *get() const { | 270 | 2 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 2 | } |
clang::CXXBaseSpecifier const* clang::DynTypedNode::get<clang::CXXBaseSpecifier>() const Line | Count | Source | 269 | 1 | template <typename T> const T *get() const { | 270 | 1 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 1 | } |
clang::DeclStmt const* clang::DynTypedNode::get<clang::DeclStmt>() const Line | Count | Source | 269 | 4.00k | template <typename T> const T *get() const { | 270 | 4.00k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 4.00k | } |
clang::CXXForRangeStmt const* clang::DynTypedNode::get<clang::CXXForRangeStmt>() const Line | Count | Source | 269 | 84 | template <typename T> const T *get() const { | 270 | 84 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 84 | } |
clang::VarDecl const* clang::DynTypedNode::get<clang::VarDecl>() const Line | Count | Source | 269 | 5.17k | template <typename T> const T *get() const { | 270 | 5.17k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 5.17k | } |
clang::CXXMethodDecl const* clang::DynTypedNode::get<clang::CXXMethodDecl>() const Line | Count | Source | 269 | 3.92k | template <typename T> const T *get() const { | 270 | 3.92k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 3.92k | } |
clang::CXXRecordDecl const* clang::DynTypedNode::get<clang::CXXRecordDecl>() const Line | Count | Source | 269 | 942 | template <typename T> const T *get() const { | 270 | 942 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 942 | } |
clang::LambdaExpr const* clang::DynTypedNode::get<clang::LambdaExpr>() const Line | Count | Source | 269 | 2.37k | template <typename T> const T *get() const { | 270 | 2.37k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 2.37k | } |
clang::FunctionTemplateDecl const* clang::DynTypedNode::get<clang::FunctionTemplateDecl>() const Line | Count | Source | 269 | 4.28k | template <typename T> const T *get() const { | 270 | 4.28k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 4.28k | } |
clang::Expr const* clang::DynTypedNode::get<clang::Expr>() const Line | Count | Source | 269 | 1.42M | template <typename T> const T *get() const { | 270 | 1.42M | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 1.42M | } |
clang::Decl const* clang::DynTypedNode::get<clang::Decl>() const Line | Count | Source | 269 | 1.30M | template <typename T> const T *get() const { | 270 | 1.30M | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 1.30M | } |
clang::CompoundStmt const* clang::DynTypedNode::get<clang::CompoundStmt>() const Line | Count | Source | 269 | 104 | template <typename T> const T *get() const { | 270 | 104 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 104 | } |
clang::CXXDeleteExpr const* clang::DynTypedNode::get<clang::CXXDeleteExpr>() const Line | Count | Source | 269 | 3 | template <typename T> const T *get() const { | 270 | 3 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 3 | } |
clang::CallExpr const* clang::DynTypedNode::get<clang::CallExpr>() const Line | Count | Source | 269 | 202 | template <typename T> const T *get() const { | 270 | 202 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 202 | } |
clang::ParmVarDecl const* clang::DynTypedNode::get<clang::ParmVarDecl>() const Line | Count | Source | 269 | 94 | template <typename T> const T *get() const { | 270 | 94 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 94 | } |
clang::ObjCAutoreleasePoolStmt const* clang::DynTypedNode::get<clang::ObjCAutoreleasePoolStmt>() const Line | Count | Source | 269 | 17 | template <typename T> const T *get() const { | 270 | 17 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 17 | } |
clang::CastExpr const* clang::DynTypedNode::get<clang::CastExpr>() const Line | Count | Source | 269 | 2 | template <typename T> const T *get() const { | 270 | 2 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 2 | } |
clang::ObjCMessageExpr const* clang::DynTypedNode::get<clang::ObjCMessageExpr>() const Line | Count | Source | 269 | 18 | template <typename T> const T *get() const { | 270 | 18 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 18 | } |
clang::MemberExpr const* clang::DynTypedNode::get<clang::MemberExpr>() const Line | Count | Source | 269 | 27 | template <typename T> const T *get() const { | 270 | 27 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 27 | } |
clang::ForStmt const* clang::DynTypedNode::get<clang::ForStmt>() const Line | Count | Source | 269 | 24 | template <typename T> const T *get() const { | 270 | 24 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 24 | } |
clang::IfStmt const* clang::DynTypedNode::get<clang::IfStmt>() const Line | Count | Source | 269 | 175 | template <typename T> const T *get() const { | 270 | 175 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 175 | } |
clang::ObjCIvarRefExpr const* clang::DynTypedNode::get<clang::ObjCIvarRefExpr>() const Line | Count | Source | 269 | 2 | template <typename T> const T *get() const { | 270 | 2 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 2 | } |
clang::DeclRefExpr const* clang::DynTypedNode::get<clang::DeclRefExpr>() const Line | Count | Source | 269 | 246 | template <typename T> const T *get() const { | 270 | 246 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 246 | } |
clang::IntegerLiteral const* clang::DynTypedNode::get<clang::IntegerLiteral>() const Line | Count | Source | 269 | 257 | template <typename T> const T *get() const { | 270 | 257 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 257 | } |
clang::BinaryOperator const* clang::DynTypedNode::get<clang::BinaryOperator>() const Line | Count | Source | 269 | 120 | template <typename T> const T *get() const { | 270 | 120 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 120 | } |
clang::NamedDecl const* clang::DynTypedNode::get<clang::NamedDecl>() const Line | Count | Source | 269 | 1.30k | template <typename T> const T *get() const { | 270 | 1.30k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 1.30k | } |
clang::FunctionDecl const* clang::DynTypedNode::get<clang::FunctionDecl>() const Line | Count | Source | 269 | 5.87k | template <typename T> const T *get() const { | 270 | 5.87k | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 5.87k | } |
clang::ObjCMethodDecl const* clang::DynTypedNode::get<clang::ObjCMethodDecl>() const Line | Count | Source | 269 | 45 | template <typename T> const T *get() const { | 270 | 45 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 45 | } |
clang::BlockDecl const* clang::DynTypedNode::get<clang::BlockDecl>() const Line | Count | Source | 269 | 32 | template <typename T> const T *get() const { | 270 | 32 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 32 | } |
clang::TranslationUnitDecl const* clang::DynTypedNode::get<clang::TranslationUnitDecl>() const Line | Count | Source | 269 | 906 | template <typename T> const T *get() const { | 270 | 906 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 906 | } |
clang::CXXThisExpr const* clang::DynTypedNode::get<clang::CXXThisExpr>() const Line | Count | Source | 269 | 146 | template <typename T> const T *get() const { | 270 | 146 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 146 | } |
clang::CXXMemberCallExpr const* clang::DynTypedNode::get<clang::CXXMemberCallExpr>() const Line | Count | Source | 269 | 118 | template <typename T> const T *get() const { | 270 | 118 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 118 | } |
clang::InitListExpr const* clang::DynTypedNode::get<clang::InitListExpr>() const Line | Count | Source | 269 | 5 | template <typename T> const T *get() const { | 270 | 5 | return BaseConverter<T>::get(NodeKind, &Storage); | 271 | 5 | } |
|
272 | | |
273 | | /// Retrieve the stored node as type \c T. |
274 | | /// |
275 | | /// Similar to \c get(), but asserts that the type is what we are expecting. |
276 | | template <typename T> |
277 | 2.46M | const T &getUnchecked() const { |
278 | 2.46M | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); |
279 | 2.46M | } clang::QualType const& clang::DynTypedNode::getUnchecked<clang::QualType>() const Line | Count | Source | 277 | 44.0k | const T &getUnchecked() const { | 278 | 44.0k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 44.0k | } |
clang::TypeLoc const& clang::DynTypedNode::getUnchecked<clang::TypeLoc>() const Line | Count | Source | 277 | 1.68M | const T &getUnchecked() const { | 278 | 1.68M | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 1.68M | } |
clang::NestedNameSpecifierLoc const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifierLoc>() const Line | Count | Source | 277 | 349k | const T &getUnchecked() const { | 278 | 349k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 349k | } |
clang::IntegerLiteral const& clang::DynTypedNode::getUnchecked<clang::IntegerLiteral>() const Line | Count | Source | 277 | 1.30k | const T &getUnchecked() const { | 278 | 1.30k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 1.30k | } |
clang::TypedefType const& clang::DynTypedNode::getUnchecked<clang::TypedefType>() const Line | Count | Source | 277 | 305 | const T &getUnchecked() const { | 278 | 305 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 305 | } |
clang::RecordType const& clang::DynTypedNode::getUnchecked<clang::RecordType>() const Line | Count | Source | 277 | 3.18k | const T &getUnchecked() const { | 278 | 3.18k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 3.18k | } |
clang::ObjCObjectPointerType const& clang::DynTypedNode::getUnchecked<clang::ObjCObjectPointerType>() const Line | Count | Source | 277 | 120 | const T &getUnchecked() const { | 278 | 120 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 120 | } |
clang::ConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::ConditionalOperator>() const Line | Count | Source | 277 | 79 | const T &getUnchecked() const { | 278 | 79 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 79 | } |
clang::ObjCAutoreleasePoolStmt const& clang::DynTypedNode::getUnchecked<clang::ObjCAutoreleasePoolStmt>() const Line | Count | Source | 277 | 25 | const T &getUnchecked() const { | 278 | 25 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 25 | } |
clang::BlockDecl const& clang::DynTypedNode::getUnchecked<clang::BlockDecl>() const Line | Count | Source | 277 | 31 | const T &getUnchecked() const { | 278 | 31 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 31 | } |
clang::PointerType const& clang::DynTypedNode::getUnchecked<clang::PointerType>() const Line | Count | Source | 277 | 718 | const T &getUnchecked() const { | 278 | 718 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 718 | } |
clang::CStyleCastExpr const& clang::DynTypedNode::getUnchecked<clang::CStyleCastExpr>() const Line | Count | Source | 277 | 43 | const T &getUnchecked() const { | 278 | 43 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 43 | } |
clang::StringLiteral const& clang::DynTypedNode::getUnchecked<clang::StringLiteral>() const Line | Count | Source | 277 | 164 | const T &getUnchecked() const { | 278 | 164 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 164 | } |
clang::ObjCIvarRefExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCIvarRefExpr>() const Line | Count | Source | 277 | 58 | const T &getUnchecked() const { | 278 | 58 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 58 | } |
clang::BinaryOperator const& clang::DynTypedNode::getUnchecked<clang::BinaryOperator>() const Line | Count | Source | 277 | 5.84k | const T &getUnchecked() const { | 278 | 5.84k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 5.84k | } |
clang::UnaryOperator const& clang::DynTypedNode::getUnchecked<clang::UnaryOperator>() const Line | Count | Source | 277 | 2.99k | const T &getUnchecked() const { | 278 | 2.99k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 2.99k | } |
clang::ObjCInterfaceDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCInterfaceDecl>() const Line | Count | Source | 277 | 4.31k | const T &getUnchecked() const { | 278 | 4.31k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 4.31k | } |
clang::FieldDecl const& clang::DynTypedNode::getUnchecked<clang::FieldDecl>() const Line | Count | Source | 277 | 863 | const T &getUnchecked() const { | 278 | 863 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 863 | } |
clang::FunctionDecl const& clang::DynTypedNode::getUnchecked<clang::FunctionDecl>() const Line | Count | Source | 277 | 61.8k | const T &getUnchecked() const { | 278 | 61.8k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 61.8k | } |
clang::ClassTemplateSpecializationDecl const& clang::DynTypedNode::getUnchecked<clang::ClassTemplateSpecializationDecl>() const Line | Count | Source | 277 | 4.55k | const T &getUnchecked() const { | 278 | 4.55k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 4.55k | } |
clang::Expr const& clang::DynTypedNode::getUnchecked<clang::Expr>() const Line | Count | Source | 277 | 32.5k | const T &getUnchecked() const { | 278 | 32.5k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 32.5k | } |
clang::TemplateArgument const& clang::DynTypedNode::getUnchecked<clang::TemplateArgument>() const Line | Count | Source | 277 | 4.16k | const T &getUnchecked() const { | 278 | 4.16k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 4.16k | } |
clang::CallExpr const& clang::DynTypedNode::getUnchecked<clang::CallExpr>() const Line | Count | Source | 277 | 15.3k | const T &getUnchecked() const { | 278 | 15.3k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 15.3k | } |
clang::InitListExpr const& clang::DynTypedNode::getUnchecked<clang::InitListExpr>() const Line | Count | Source | 277 | 302 | const T &getUnchecked() const { | 278 | 302 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 302 | } |
clang::ForStmt const& clang::DynTypedNode::getUnchecked<clang::ForStmt>() const Line | Count | Source | 277 | 719 | const T &getUnchecked() const { | 278 | 719 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 719 | } |
clang::CXXForRangeStmt const& clang::DynTypedNode::getUnchecked<clang::CXXForRangeStmt>() const Line | Count | Source | 277 | 185 | const T &getUnchecked() const { | 278 | 185 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 185 | } |
clang::DesignatedInitExpr const& clang::DynTypedNode::getUnchecked<clang::DesignatedInitExpr>() const Line | Count | Source | 277 | 160 | const T &getUnchecked() const { | 278 | 160 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 160 | } |
clang::UnaryExprOrTypeTraitExpr const& clang::DynTypedNode::getUnchecked<clang::UnaryExprOrTypeTraitExpr>() const Line | Count | Source | 277 | 291 | const T &getUnchecked() const { | 278 | 291 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 291 | } |
clang::NamedDecl const& clang::DynTypedNode::getUnchecked<clang::NamedDecl>() const Line | Count | Source | 277 | 112k | const T &getUnchecked() const { | 278 | 112k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 112k | } |
clang::CXXDependentScopeMemberExpr const& clang::DynTypedNode::getUnchecked<clang::CXXDependentScopeMemberExpr>() const Line | Count | Source | 277 | 99 | const T &getUnchecked() const { | 278 | 99 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 99 | } |
clang::CXXRecordDecl const& clang::DynTypedNode::getUnchecked<clang::CXXRecordDecl>() const Line | Count | Source | 277 | 16.6k | const T &getUnchecked() const { | 278 | 16.6k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 16.6k | } |
clang::CXXMemberCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXMemberCallExpr>() const Line | Count | Source | 277 | 2.75k | const T &getUnchecked() const { | 278 | 2.75k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 2.75k | } |
clang::ObjCMessageExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCMessageExpr>() const Line | Count | Source | 277 | 262 | const T &getUnchecked() const { | 278 | 262 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 262 | } |
clang::ObjCMethodDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCMethodDecl>() const Line | Count | Source | 277 | 111 | const T &getUnchecked() const { | 278 | 111 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 111 | } |
clang::Type const& clang::DynTypedNode::getUnchecked<clang::Type>() const Line | Count | Source | 277 | 6.07k | const T &getUnchecked() const { | 278 | 6.07k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 6.07k | } |
clang::DeclRefExpr const& clang::DynTypedNode::getUnchecked<clang::DeclRefExpr>() const Line | Count | Source | 277 | 3.52k | const T &getUnchecked() const { | 278 | 3.52k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 3.52k | } |
clang::OverloadExpr const& clang::DynTypedNode::getUnchecked<clang::OverloadExpr>() const Line | Count | Source | 277 | 14 | const T &getUnchecked() const { | 278 | 14 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 14 | } |
clang::DeclStmt const& clang::DynTypedNode::getUnchecked<clang::DeclStmt>() const Line | Count | Source | 277 | 722 | const T &getUnchecked() const { | 278 | 722 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 722 | } |
clang::VarDecl const& clang::DynTypedNode::getUnchecked<clang::VarDecl>() const Line | Count | Source | 277 | 7.46k | const T &getUnchecked() const { | 278 | 7.46k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 7.46k | } |
clang::LambdaExpr const& clang::DynTypedNode::getUnchecked<clang::LambdaExpr>() const Line | Count | Source | 277 | 350 | const T &getUnchecked() const { | 278 | 350 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 350 | } |
clang::CXXCatchStmt const& clang::DynTypedNode::getUnchecked<clang::CXXCatchStmt>() const Line | Count | Source | 277 | 100 | const T &getUnchecked() const { | 278 | 100 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 100 | } |
clang::CXXConstructorDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConstructorDecl>() const Line | Count | Source | 277 | 2.31k | const T &getUnchecked() const { | 278 | 2.31k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 2.31k | } |
clang::CXXCtorInitializer const& clang::DynTypedNode::getUnchecked<clang::CXXCtorInitializer>() const Line | Count | Source | 277 | 216 | const T &getUnchecked() const { | 278 | 216 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 216 | } |
clang::LambdaCapture const& clang::DynTypedNode::getUnchecked<clang::LambdaCapture>() const Line | Count | Source | 277 | 298 | const T &getUnchecked() const { | 278 | 298 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 298 | } |
clang::CXXConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXConstructExpr>() const Line | Count | Source | 277 | 3.89k | const T &getUnchecked() const { | 278 | 3.89k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 3.89k | } |
clang::ParmVarDecl const& clang::DynTypedNode::getUnchecked<clang::ParmVarDecl>() const Line | Count | Source | 277 | 1.75k | const T &getUnchecked() const { | 278 | 1.75k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 1.75k | } |
clang::IfStmt const& clang::DynTypedNode::getUnchecked<clang::IfStmt>() const Line | Count | Source | 277 | 452 | const T &getUnchecked() const { | 278 | 452 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 452 | } |
clang::ArraySubscriptExpr const& clang::DynTypedNode::getUnchecked<clang::ArraySubscriptExpr>() const Line | Count | Source | 277 | 22 | const T &getUnchecked() const { | 278 | 22 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 22 | } |
clang::CompoundStmt const& clang::DynTypedNode::getUnchecked<clang::CompoundStmt>() const Line | Count | Source | 277 | 1.18k | const T &getUnchecked() const { | 278 | 1.18k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 1.18k | } |
clang::CastExpr const& clang::DynTypedNode::getUnchecked<clang::CastExpr>() const Line | Count | Source | 277 | 3.64k | const T &getUnchecked() const { | 278 | 3.64k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 3.64k | } |
clang::ExplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ExplicitCastExpr>() const Line | Count | Source | 277 | 373 | const T &getUnchecked() const { | 278 | 373 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 373 | } |
clang::ImplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ImplicitCastExpr>() const Line | Count | Source | 277 | 240 | const T &getUnchecked() const { | 278 | 240 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 240 | } |
clang::TagDecl const& clang::DynTypedNode::getUnchecked<clang::TagDecl>() const Line | Count | Source | 277 | 270 | const T &getUnchecked() const { | 278 | 270 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 270 | } |
clang::AbstractConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::AbstractConditionalOperator>() const Line | Count | Source | 277 | 583 | const T &getUnchecked() const { | 278 | 583 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 583 | } |
clang::CXXMethodDecl const& clang::DynTypedNode::getUnchecked<clang::CXXMethodDecl>() const Line | Count | Source | 277 | 5.73k | const T &getUnchecked() const { | 278 | 5.73k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 5.73k | } |
clang::MemberExpr const& clang::DynTypedNode::getUnchecked<clang::MemberExpr>() const Line | Count | Source | 277 | 502 | const T &getUnchecked() const { | 278 | 502 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 502 | } |
clang::BaseUsingDecl const& clang::DynTypedNode::getUnchecked<clang::BaseUsingDecl>() const Line | Count | Source | 277 | 30 | const T &getUnchecked() const { | 278 | 30 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 30 | } |
clang::UsingShadowDecl const& clang::DynTypedNode::getUnchecked<clang::UsingShadowDecl>() const Line | Count | Source | 277 | 3.01k | const T &getUnchecked() const { | 278 | 3.01k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 3.01k | } |
clang::QualifiedTypeLoc const& clang::DynTypedNode::getUnchecked<clang::QualifiedTypeLoc>() const Line | Count | Source | 277 | 18 | const T &getUnchecked() const { | 278 | 18 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 18 | } |
clang::PointerTypeLoc const& clang::DynTypedNode::getUnchecked<clang::PointerTypeLoc>() const Line | Count | Source | 277 | 40 | const T &getUnchecked() const { | 278 | 40 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 40 | } |
clang::ReferenceTypeLoc const& clang::DynTypedNode::getUnchecked<clang::ReferenceTypeLoc>() const Line | Count | Source | 277 | 28 | const T &getUnchecked() const { | 278 | 28 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 28 | } |
clang::TemplateSpecializationTypeLoc const& clang::DynTypedNode::getUnchecked<clang::TemplateSpecializationTypeLoc>() const Line | Count | Source | 277 | 46 | const T &getUnchecked() const { | 278 | 46 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 46 | } |
clang::ElaboratedTypeLoc const& clang::DynTypedNode::getUnchecked<clang::ElaboratedTypeLoc>() const Line | Count | Source | 277 | 4 | const T &getUnchecked() const { | 278 | 4 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 4 | } |
clang::VariableArrayType const& clang::DynTypedNode::getUnchecked<clang::VariableArrayType>() const Line | Count | Source | 277 | 28 | const T &getUnchecked() const { | 278 | 28 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 28 | } |
clang::ElaboratedType const& clang::DynTypedNode::getUnchecked<clang::ElaboratedType>() const Line | Count | Source | 277 | 12 | const T &getUnchecked() const { | 278 | 12 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 12 | } |
clang::DecayedType const& clang::DynTypedNode::getUnchecked<clang::DecayedType>() const Line | Count | Source | 277 | 28 | const T &getUnchecked() const { | 278 | 28 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 28 | } |
clang::Decl const& clang::DynTypedNode::getUnchecked<clang::Decl>() const Line | Count | Source | 277 | 10.0k | const T &getUnchecked() const { | 278 | 10.0k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 10.0k | } |
clang::NestedNameSpecifier const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifier>() const Line | Count | Source | 277 | 292 | const T &getUnchecked() const { | 278 | 292 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 292 | } |
clang::Stmt const& clang::DynTypedNode::getUnchecked<clang::Stmt>() const Line | Count | Source | 277 | 44.0k | const T &getUnchecked() const { | 278 | 44.0k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 44.0k | } |
clang::SwitchStmt const& clang::DynTypedNode::getUnchecked<clang::SwitchStmt>() const Line | Count | Source | 277 | 63 | const T &getUnchecked() const { | 278 | 63 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 63 | } |
clang::NamespaceDecl const& clang::DynTypedNode::getUnchecked<clang::NamespaceDecl>() const Line | Count | Source | 277 | 81 | const T &getUnchecked() const { | 278 | 81 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 81 | } |
clang::CaseStmt const& clang::DynTypedNode::getUnchecked<clang::CaseStmt>() const Line | Count | Source | 277 | 10 | const T &getUnchecked() const { | 278 | 10 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 10 | } |
clang::ReturnStmt const& clang::DynTypedNode::getUnchecked<clang::ReturnStmt>() const Line | Count | Source | 277 | 68 | const T &getUnchecked() const { | 278 | 68 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 68 | } |
clang::BindingDecl const& clang::DynTypedNode::getUnchecked<clang::BindingDecl>() const Line | Count | Source | 277 | 8 | const T &getUnchecked() const { | 278 | 8 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 8 | } |
clang::DecompositionDecl const& clang::DynTypedNode::getUnchecked<clang::DecompositionDecl>() const Line | Count | Source | 277 | 10 | const T &getUnchecked() const { | 278 | 10 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 10 | } |
clang::CXXNewExpr const& clang::DynTypedNode::getUnchecked<clang::CXXNewExpr>() const Line | Count | Source | 277 | 68 | const T &getUnchecked() const { | 278 | 68 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 68 | } |
clang::EnumDecl const& clang::DynTypedNode::getUnchecked<clang::EnumDecl>() const Line | Count | Source | 277 | 345 | const T &getUnchecked() const { | 278 | 345 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 345 | } |
clang::OMPExecutableDirective const& clang::DynTypedNode::getUnchecked<clang::OMPExecutableDirective>() const Line | Count | Source | 277 | 902 | const T &getUnchecked() const { | 278 | 902 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 902 | } |
clang::OMPDefaultClause const& clang::DynTypedNode::getUnchecked<clang::OMPDefaultClause>() const Line | Count | Source | 277 | 240 | const T &getUnchecked() const { | 278 | 240 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 240 | } |
clang::FriendDecl const& clang::DynTypedNode::getUnchecked<clang::FriendDecl>() const Line | Count | Source | 277 | 58 | const T &getUnchecked() const { | 278 | 58 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 58 | } |
clang::TypedefNameDecl const& clang::DynTypedNode::getUnchecked<clang::TypedefNameDecl>() const Line | Count | Source | 277 | 38 | const T &getUnchecked() const { | 278 | 38 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 38 | } |
clang::ValueDecl const& clang::DynTypedNode::getUnchecked<clang::ValueDecl>() const Line | Count | Source | 277 | 102 | const T &getUnchecked() const { | 278 | 102 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 102 | } |
clang::CXXBaseSpecifier const& clang::DynTypedNode::getUnchecked<clang::CXXBaseSpecifier>() const Line | Count | Source | 277 | 530 | const T &getUnchecked() const { | 278 | 530 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 530 | } |
clang::CharacterLiteral const& clang::DynTypedNode::getUnchecked<clang::CharacterLiteral>() const Line | Count | Source | 277 | 8 | const T &getUnchecked() const { | 278 | 8 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 8 | } |
clang::CXXBoolLiteralExpr const& clang::DynTypedNode::getUnchecked<clang::CXXBoolLiteralExpr>() const Line | Count | Source | 277 | 422 | const T &getUnchecked() const { | 278 | 422 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 422 | } |
clang::FloatingLiteral const& clang::DynTypedNode::getUnchecked<clang::FloatingLiteral>() const Line | Count | Source | 277 | 336 | const T &getUnchecked() const { | 278 | 336 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 336 | } |
clang::CXXUnresolvedConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXUnresolvedConstructExpr>() const Line | Count | Source | 277 | 18 | const T &getUnchecked() const { | 278 | 18 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 18 | } |
clang::Attr const& clang::DynTypedNode::getUnchecked<clang::Attr>() const Line | Count | Source | 277 | 6 | const T &getUnchecked() const { | 278 | 6 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 6 | } |
clang::TemplateSpecializationType const& clang::DynTypedNode::getUnchecked<clang::TemplateSpecializationType>() const Line | Count | Source | 277 | 94 | const T &getUnchecked() const { | 278 | 94 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 94 | } |
clang::CXXOperatorCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXOperatorCallExpr>() const Line | Count | Source | 277 | 3.76k | const T &getUnchecked() const { | 278 | 3.76k | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 3.76k | } |
clang::CXXRewrittenBinaryOperator const& clang::DynTypedNode::getUnchecked<clang::CXXRewrittenBinaryOperator>() const Line | Count | Source | 277 | 518 | const T &getUnchecked() const { | 278 | 518 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 518 | } |
clang::StmtExpr const& clang::DynTypedNode::getUnchecked<clang::StmtExpr>() const Line | Count | Source | 277 | 16 | const T &getUnchecked() const { | 278 | 16 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 16 | } |
clang::DoStmt const& clang::DynTypedNode::getUnchecked<clang::DoStmt>() const Line | Count | Source | 277 | 2 | const T &getUnchecked() const { | 278 | 2 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 2 | } |
clang::WhileStmt const& clang::DynTypedNode::getUnchecked<clang::WhileStmt>() const Line | Count | Source | 277 | 6 | const T &getUnchecked() const { | 278 | 6 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 6 | } |
Unexecuted instantiation: clang::EnumType const& clang::DynTypedNode::getUnchecked<clang::EnumType>() const Unexecuted instantiation: clang::InjectedClassNameType const& clang::DynTypedNode::getUnchecked<clang::InjectedClassNameType>() const clang::LabelStmt const& clang::DynTypedNode::getUnchecked<clang::LabelStmt>() const Line | Count | Source | 277 | 36 | const T &getUnchecked() const { | 278 | 36 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 36 | } |
clang::AddrLabelExpr const& clang::DynTypedNode::getUnchecked<clang::AddrLabelExpr>() const Line | Count | Source | 277 | 8 | const T &getUnchecked() const { | 278 | 8 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 8 | } |
Unexecuted instantiation: clang::TagType const& clang::DynTypedNode::getUnchecked<clang::TagType>() const Unexecuted instantiation: clang::TemplateTypeParmType const& clang::DynTypedNode::getUnchecked<clang::TemplateTypeParmType>() const Unexecuted instantiation: clang::UnresolvedUsingType const& clang::DynTypedNode::getUnchecked<clang::UnresolvedUsingType>() const Unexecuted instantiation: clang::AutoType const& clang::DynTypedNode::getUnchecked<clang::AutoType>() const clang::FunctionProtoType const& clang::DynTypedNode::getUnchecked<clang::FunctionProtoType>() const Line | Count | Source | 277 | 212 | const T &getUnchecked() const { | 278 | 212 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 212 | } |
clang::ArrayType const& clang::DynTypedNode::getUnchecked<clang::ArrayType>() const Line | Count | Source | 277 | 144 | const T &getUnchecked() const { | 278 | 144 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 144 | } |
clang::ComplexType const& clang::DynTypedNode::getUnchecked<clang::ComplexType>() const Line | Count | Source | 277 | 56 | const T &getUnchecked() const { | 278 | 56 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 56 | } |
clang::UnresolvedMemberExpr const& clang::DynTypedNode::getUnchecked<clang::UnresolvedMemberExpr>() const Line | Count | Source | 277 | 42 | const T &getUnchecked() const { | 278 | 42 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 42 | } |
clang::SubstTemplateTypeParmType const& clang::DynTypedNode::getUnchecked<clang::SubstTemplateTypeParmType>() const Line | Count | Source | 277 | 4 | const T &getUnchecked() const { | 278 | 4 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 4 | } |
clang::ConstantArrayType const& clang::DynTypedNode::getUnchecked<clang::ConstantArrayType>() const Line | Count | Source | 277 | 148 | const T &getUnchecked() const { | 278 | 148 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 148 | } |
clang::OpaqueValueExpr const& clang::DynTypedNode::getUnchecked<clang::OpaqueValueExpr>() const Line | Count | Source | 277 | 46 | const T &getUnchecked() const { | 278 | 46 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 46 | } |
clang::CXXFunctionalCastExpr const& clang::DynTypedNode::getUnchecked<clang::CXXFunctionalCastExpr>() const Line | Count | Source | 277 | 7 | const T &getUnchecked() const { | 278 | 7 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 7 | } |
clang::CXXTemporaryObjectExpr const& clang::DynTypedNode::getUnchecked<clang::CXXTemporaryObjectExpr>() const Line | Count | Source | 277 | 7 | const T &getUnchecked() const { | 278 | 7 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 7 | } |
clang::CompoundLiteralExpr const& clang::DynTypedNode::getUnchecked<clang::CompoundLiteralExpr>() const Line | Count | Source | 277 | 18 | const T &getUnchecked() const { | 278 | 18 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 18 | } |
clang::DeclaratorDecl const& clang::DynTypedNode::getUnchecked<clang::DeclaratorDecl>() const Line | Count | Source | 277 | 26 | const T &getUnchecked() const { | 278 | 26 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 26 | } |
clang::ObjCPropertyDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCPropertyDecl>() const Line | Count | Source | 277 | 2 | const T &getUnchecked() const { | 278 | 2 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 2 | } |
clang::TemplateArgumentLoc const& clang::DynTypedNode::getUnchecked<clang::TemplateArgumentLoc>() const Line | Count | Source | 277 | 42 | const T &getUnchecked() const { | 278 | 42 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 42 | } |
clang::DecltypeType const& clang::DynTypedNode::getUnchecked<clang::DecltypeType>() const Line | Count | Source | 277 | 16 | const T &getUnchecked() const { | 278 | 16 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 16 | } |
Unexecuted instantiation: clang::UsingType const& clang::DynTypedNode::getUnchecked<clang::UsingType>() const clang::AtomicType const& clang::DynTypedNode::getUnchecked<clang::AtomicType>() const Line | Count | Source | 277 | 56 | const T &getUnchecked() const { | 278 | 56 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 56 | } |
clang::ParenType const& clang::DynTypedNode::getUnchecked<clang::ParenType>() const Line | Count | Source | 277 | 58 | const T &getUnchecked() const { | 278 | 58 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 58 | } |
clang::CXXConversionDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConversionDecl>() const Line | Count | Source | 277 | 48 | const T &getUnchecked() const { | 278 | 48 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 48 | } |
clang::CXXDeductionGuideDecl const& clang::DynTypedNode::getUnchecked<clang::CXXDeductionGuideDecl>() const Line | Count | Source | 277 | 140 | const T &getUnchecked() const { | 278 | 140 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 140 | } |
Unexecuted instantiation: clang::BlockPointerType const& clang::DynTypedNode::getUnchecked<clang::BlockPointerType>() const Unexecuted instantiation: clang::MemberPointerType const& clang::DynTypedNode::getUnchecked<clang::MemberPointerType>() const clang::ReferenceType const& clang::DynTypedNode::getUnchecked<clang::ReferenceType>() const Line | Count | Source | 277 | 307 | const T &getUnchecked() const { | 278 | 307 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 307 | } |
clang::CXXTypeidExpr const& clang::DynTypedNode::getUnchecked<clang::CXXTypeidExpr>() const Line | Count | Source | 277 | 2 | const T &getUnchecked() const { | 278 | 2 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 2 | } |
clang::GenericSelectionExpr const& clang::DynTypedNode::getUnchecked<clang::GenericSelectionExpr>() const Line | Count | Source | 277 | 1 | const T &getUnchecked() const { | 278 | 1 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 1 | } |
clang::ParenListExpr const& clang::DynTypedNode::getUnchecked<clang::ParenListExpr>() const Line | Count | Source | 277 | 30 | const T &getUnchecked() const { | 278 | 30 | return BaseConverter<T>::getUnchecked(NodeKind, &Storage); | 279 | 30 | } |
|
280 | | |
281 | 2.19M | ASTNodeKind getNodeKind() const { return NodeKind; } |
282 | | |
283 | | /// Returns a pointer that identifies the stored AST node. |
284 | | /// |
285 | | /// Note that this is not supported by all AST nodes. For AST nodes |
286 | | /// that don't have a pointer-defined identity inside the AST, this |
287 | | /// method returns NULL. |
288 | 1.41M | const void *getMemoizationData() const { |
289 | 1.41M | return NodeKind.hasPointerIdentity() |
290 | 1.41M | ? *reinterpret_cast<void *const *>(&Storage)1.39M |
291 | 1.41M | : nullptr15.1k ; |
292 | 1.41M | } |
293 | | |
294 | | /// Prints the node to the given output stream. |
295 | | void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const; |
296 | | |
297 | | /// Dumps the node to the given output stream. |
298 | | void dump(llvm::raw_ostream &OS, const ASTContext &Context) const; |
299 | | |
300 | | /// For nodes which represent textual entities in the source code, |
301 | | /// return their SourceRange. For all other nodes, return SourceRange(). |
302 | | SourceRange getSourceRange() const; |
303 | | |
304 | | /// @{ |
305 | | /// Imposes an order on \c DynTypedNode. |
306 | | /// |
307 | | /// Supports comparison of nodes that support memoization. |
308 | | /// FIXME: Implement comparison for other node types (currently |
309 | | /// only Stmt, Decl, Type and NestedNameSpecifier return memoization data). |
310 | 179k | bool operator<(const DynTypedNode &Other) const { |
311 | 179k | if (!NodeKind.isSame(Other.NodeKind)) |
312 | 74.3k | return NodeKind < Other.NodeKind; |
313 | | |
314 | 105k | if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind)) |
315 | 1 | return getUnchecked<QualType>().getAsOpaquePtr() < |
316 | 1 | Other.getUnchecked<QualType>().getAsOpaquePtr(); |
317 | | |
318 | 105k | if (ASTNodeKind::getFromNodeKind<TypeLoc>().isBaseOf(NodeKind)) { |
319 | 7 | auto TLA = getUnchecked<TypeLoc>(); |
320 | 7 | auto TLB = Other.getUnchecked<TypeLoc>(); |
321 | 7 | return std::make_pair(TLA.getType().getAsOpaquePtr(), |
322 | 7 | TLA.getOpaqueData()) < |
323 | 7 | std::make_pair(TLB.getType().getAsOpaquePtr(), |
324 | 7 | TLB.getOpaqueData()); |
325 | 7 | } |
326 | | |
327 | 105k | if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame( |
328 | 105k | NodeKind)) { |
329 | 0 | auto NNSLA = getUnchecked<NestedNameSpecifierLoc>(); |
330 | 0 | auto NNSLB = Other.getUnchecked<NestedNameSpecifierLoc>(); |
331 | 0 | return std::make_pair(NNSLA.getNestedNameSpecifier(), |
332 | 0 | NNSLA.getOpaqueData()) < |
333 | 0 | std::make_pair(NNSLB.getNestedNameSpecifier(), |
334 | 0 | NNSLB.getOpaqueData()); |
335 | 0 | } |
336 | | |
337 | 105k | assert(getMemoizationData() && Other.getMemoizationData()); |
338 | 0 | return getMemoizationData() < Other.getMemoizationData(); |
339 | 105k | } |
340 | 13.9M | bool operator==(const DynTypedNode &Other) const { |
341 | | // DynTypedNode::create() stores the exact kind of the node in NodeKind. |
342 | | // If they contain the same node, their NodeKind must be the same. |
343 | 13.9M | if (!NodeKind.isSame(Other.NodeKind)) |
344 | 13.5M | return false; |
345 | | |
346 | | // FIXME: Implement for other types. |
347 | 424k | if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind)) |
348 | 141 | return getUnchecked<QualType>() == Other.getUnchecked<QualType>(); |
349 | | |
350 | 424k | if (ASTNodeKind::getFromNodeKind<TypeLoc>().isBaseOf(NodeKind)) |
351 | 152k | return getUnchecked<TypeLoc>() == Other.getUnchecked<TypeLoc>(); |
352 | | |
353 | 272k | if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(NodeKind)) |
354 | 44.1k | return getUnchecked<NestedNameSpecifierLoc>() == |
355 | 44.1k | Other.getUnchecked<NestedNameSpecifierLoc>(); |
356 | | |
357 | 227k | assert(getMemoizationData() && Other.getMemoizationData()); |
358 | 0 | return getMemoizationData() == Other.getMemoizationData(); |
359 | 272k | } |
360 | 208k | bool operator!=(const DynTypedNode &Other) const { |
361 | 208k | return !operator==(Other); |
362 | 208k | } |
363 | | /// @} |
364 | | |
365 | | /// Hooks for using DynTypedNode as a key in a DenseMap. |
366 | | struct DenseMapInfo { |
367 | 3.08M | static inline DynTypedNode getEmptyKey() { |
368 | 3.08M | DynTypedNode Node; |
369 | 3.08M | Node.NodeKind = ASTNodeKind::DenseMapInfo::getEmptyKey(); |
370 | 3.08M | return Node; |
371 | 3.08M | } |
372 | 2.36M | static inline DynTypedNode getTombstoneKey() { |
373 | 2.36M | DynTypedNode Node; |
374 | 2.36M | Node.NodeKind = ASTNodeKind::DenseMapInfo::getTombstoneKey(); |
375 | 2.36M | return Node; |
376 | 2.36M | } |
377 | 1.64M | static unsigned getHashValue(const DynTypedNode &Val) { |
378 | | // FIXME: Add hashing support for the remaining types. |
379 | 1.64M | if (ASTNodeKind::getFromNodeKind<TypeLoc>().isBaseOf(Val.NodeKind)) { |
380 | 1.38M | auto TL = Val.getUnchecked<TypeLoc>(); |
381 | 1.38M | return llvm::hash_combine(TL.getType().getAsOpaquePtr(), |
382 | 1.38M | TL.getOpaqueData()); |
383 | 1.38M | } |
384 | | |
385 | 261k | if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame( |
386 | 261k | Val.NodeKind)) { |
387 | 261k | auto NNSL = Val.getUnchecked<NestedNameSpecifierLoc>(); |
388 | 261k | return llvm::hash_combine(NNSL.getNestedNameSpecifier(), |
389 | 261k | NNSL.getOpaqueData()); |
390 | 261k | } |
391 | | |
392 | 13 | assert(Val.getMemoizationData()); |
393 | 0 | return llvm::hash_value(Val.getMemoizationData()); |
394 | 261k | } |
395 | 17.4M | static bool isEqual(const DynTypedNode &LHS, const DynTypedNode &RHS) { |
396 | 17.4M | auto Empty = ASTNodeKind::DenseMapInfo::getEmptyKey(); |
397 | 17.4M | auto TombStone = ASTNodeKind::DenseMapInfo::getTombstoneKey(); |
398 | 17.4M | return (ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, Empty) && |
399 | 17.4M | ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, Empty)3.79M ) || |
400 | 17.4M | (13.6M ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, TombStone)13.6M && |
401 | 13.6M | ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, TombStone)0 ) || |
402 | 17.4M | LHS == RHS13.6M ; |
403 | 17.4M | } |
404 | | }; |
405 | | |
406 | | private: |
407 | | /// Takes care of converting from and to \c T. |
408 | | template <typename T, typename EnablerT = void> struct BaseConverter; |
409 | | |
410 | | /// Converter that uses dyn_cast<T> from a stored BaseT*. |
411 | | template <typename T, typename BaseT> struct DynCastPtrConverter { |
412 | 3.55M | static const T *get(ASTNodeKind NodeKind, const void *Storage) { |
413 | 3.55M | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) |
414 | 1.36M | return &getUnchecked(NodeKind, Storage); |
415 | 2.18M | return nullptr; |
416 | 3.55M | } clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 794k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 794k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 236k | return &getUnchecked(NodeKind, Storage); | 415 | 558k | return nullptr; | 416 | 794k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 79 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 79 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 52 | return &getUnchecked(NodeKind, Storage); | 415 | 27 | return nullptr; | 416 | 79 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Attr, clang::Attr>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 13 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 13 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 13 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 13 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 2 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 2 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 0 | return &getUnchecked(NodeKind, Storage); | 415 | 2 | return nullptr; | 416 | 2 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 4.00k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 4.00k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 98 | return &getUnchecked(NodeKind, Storage); | 415 | 3.91k | return nullptr; | 416 | 4.00k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 84 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 84 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 7 | return &getUnchecked(NodeKind, Storage); | 415 | 77 | return nullptr; | 416 | 84 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 5.17k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 5.17k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 1.53k | return &getUnchecked(NodeKind, Storage); | 415 | 3.64k | return nullptr; | 416 | 5.17k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 3.92k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 3.92k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 260 | return &getUnchecked(NodeKind, Storage); | 415 | 3.66k | return nullptr; | 416 | 3.92k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 942 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 942 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 940 | return &getUnchecked(NodeKind, Storage); | 415 | 2 | return nullptr; | 416 | 942 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 2.37k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 2.37k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 46 | return &getUnchecked(NodeKind, Storage); | 415 | 2.33k | return nullptr; | 416 | 2.37k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionTemplateDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 4.28k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 4.28k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 616 | return &getUnchecked(NodeKind, Storage); | 415 | 3.66k | return nullptr; | 416 | 4.28k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 1.42M | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 1.42M | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 601k | return &getUnchecked(NodeKind, Storage); | 415 | 826k | return nullptr; | 416 | 1.42M | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 1.30M | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 1.30M | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 516k | return &getUnchecked(NodeKind, Storage); | 415 | 784k | return nullptr; | 416 | 1.30M | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 104 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 104 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 56 | return &getUnchecked(NodeKind, Storage); | 415 | 48 | return nullptr; | 416 | 104 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDeleteExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 3 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 3 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 3 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 3 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 202 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 202 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 201 | return &getUnchecked(NodeKind, Storage); | 415 | 1 | return nullptr; | 416 | 202 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 94 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 94 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 94 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 94 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 17 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 17 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 17 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 17 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 2 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 2 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 2 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 2 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 18 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 18 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 18 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 18 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 27 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 27 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 27 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 27 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 24 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 24 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 1 | return &getUnchecked(NodeKind, Storage); | 415 | 23 | return nullptr; | 416 | 24 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 175 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 175 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 125 | return &getUnchecked(NodeKind, Storage); | 415 | 50 | return nullptr; | 416 | 175 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 2 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 2 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 2 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 2 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 246 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 246 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 241 | return &getUnchecked(NodeKind, Storage); | 415 | 5 | return nullptr; | 416 | 246 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 257 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 257 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 257 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 257 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 120 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 120 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 120 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 120 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 1.30k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 1.30k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 959 | return &getUnchecked(NodeKind, Storage); | 415 | 348 | return nullptr; | 416 | 1.30k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 5.87k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 5.87k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 3.53k | return &getUnchecked(NodeKind, Storage); | 415 | 2.33k | return nullptr; | 416 | 5.87k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 45 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 45 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 17 | return &getUnchecked(NodeKind, Storage); | 415 | 28 | return nullptr; | 416 | 45 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 32 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 32 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 8 | return &getUnchecked(NodeKind, Storage); | 415 | 24 | return nullptr; | 416 | 32 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 906 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 906 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 906 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 906 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 146 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 146 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 0 | return &getUnchecked(NodeKind, Storage); | 415 | 146 | return nullptr; | 416 | 146 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 118 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 118 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 118 | return &getUnchecked(NodeKind, Storage); | 415 | 0 | return nullptr; | 416 | 118 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 412 | 5 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 413 | 5 | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) | 414 | 4 | return &getUnchecked(NodeKind, Storage); | 415 | 1 | return nullptr; | 416 | 5 | } |
|
417 | 1.74M | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { |
418 | 1.74M | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); |
419 | 0 | return *cast<T>(static_cast<const BaseT *>( |
420 | 1.74M | *reinterpret_cast<const void *const *>(Storage))); |
421 | 1.74M | } clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 280k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 280k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 280k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 280k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 6.12k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 6.12k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 6.12k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 6.12k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Attr, clang::Attr>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 19 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 19 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 19 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 19 | } |
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, void const*) clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 820 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 820 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 820 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 820 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 192 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 192 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 192 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 192 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 9.00k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 9.00k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 9.00k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 9.00k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 5.99k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 5.99k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 5.99k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 5.99k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 17.6k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 17.6k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 17.6k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 17.6k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 396 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 396 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 396 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 396 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionTemplateDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 1.20k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 1.20k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 1.20k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 1.20k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 634k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 634k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 634k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 634k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 526k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 526k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 526k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 526k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 1.23k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 1.23k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 1.23k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 1.23k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDeleteExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 3 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 3 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 3 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 3 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 305 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 305 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 305 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 305 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::RecordType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 3.18k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 3.18k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 3.18k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 3.18k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCObjectPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 120 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 120 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 120 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 120 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 79 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 79 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 79 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 79 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 42 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 42 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 42 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 42 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::PointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 719 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 719 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 719 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 719 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CStyleCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 43 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 43 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 43 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 43 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::StringLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 165 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 165 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 165 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 165 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 60 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 60 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 60 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 60 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 5.96k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 5.96k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 5.96k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 5.96k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 2.99k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 2.99k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 2.99k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 2.99k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 1.55k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 1.55k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 1.55k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 1.55k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 4.31k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 4.31k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 4.31k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 4.31k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 113k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 113k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 113k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 113k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 65.4k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 65.4k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 65.4k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 65.4k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 128 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 128 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 128 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 128 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 39 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 39 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 39 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 39 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 1.51k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 1.51k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 1.51k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 1.51k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateSpecializationDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 4.94k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 4.94k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 4.94k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 4.94k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 15.5k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 15.5k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 15.5k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 15.5k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 306 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 306 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 306 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 306 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 720 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 720 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 720 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 720 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DesignatedInitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 160 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 160 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 160 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 160 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryExprOrTypeTraitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 291 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 291 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 291 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 291 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDependentScopeMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 99 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 99 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 99 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 99 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 2.87k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 2.87k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 2.87k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 2.87k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 280 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 280 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 280 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 280 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 3.76k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 3.76k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 3.76k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 3.76k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::OverloadExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 14 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 14 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 14 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 14 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXCatchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 100 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 100 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 100 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 100 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 2.40k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 2.40k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 2.40k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 2.40k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 3.90k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 3.90k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 3.90k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 3.90k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 1.85k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 1.85k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 1.85k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 1.85k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 577 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 577 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 577 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 577 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ArraySubscriptExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 22 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 22 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 22 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 22 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 3.64k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 3.64k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 3.64k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 3.64k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 373 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 373 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 373 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 373 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ImplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 240 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 240 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 240 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 240 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::TagDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 271 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 271 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 271 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 271 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::AbstractConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 583 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 583 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 583 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 583 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 529 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 529 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 529 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 529 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BaseUsingDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 30 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 30 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 30 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 30 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 3.11k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 3.11k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 3.11k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 3.11k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::VariableArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 28 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 28 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 28 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 28 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ElaboratedType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 12 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 12 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 12 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 12 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DecayedType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 28 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 28 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 28 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 28 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 63 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 63 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 63 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 63 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 106 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 106 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 106 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 106 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CaseStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 28 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 28 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 28 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 28 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ReturnStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 74 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 74 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 74 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 74 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BindingDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 32 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 32 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 32 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 32 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DecompositionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 18 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 18 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 18 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 18 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXNewExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 71 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 71 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 71 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 71 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::EnumDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 781 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 781 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 781 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 781 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::OMPExecutableDirective, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 902 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 902 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 902 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 902 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::OMPDefaultClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 240 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 240 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 240 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 240 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 1.28k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 1.28k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 1.28k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 1.28k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 8 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 8 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 8 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 8 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FriendDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 181 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 181 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 181 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 181 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefNameDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 370 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 370 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 370 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 370 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 323 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 323 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 323 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 323 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CharacterLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 8 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 8 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 8 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 8 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXBoolLiteralExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 422 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 422 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 422 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 422 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FloatingLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 336 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 336 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 336 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 336 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXUnresolvedConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 19 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 19 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 19 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 19 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::TemplateSpecializationType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 107 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 107 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 107 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 107 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXOperatorCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 3.89k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 3.89k | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 3.89k | *reinterpret_cast<const void *const *>(Storage))); | 421 | 3.89k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRewrittenBinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 518 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 518 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 518 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 518 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::StmtExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 16 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 16 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 16 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 16 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DoStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 2 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 2 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 2 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 2 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::WhileStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 7 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 7 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 7 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 7 | } |
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::EnumType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::InjectedClassNameType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) clang::DynTypedNode::DynCastPtrConverter<clang::LabelStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 38 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 38 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 38 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 38 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::AddrLabelExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 8 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 8 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 8 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 8 | } |
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TagType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedUsingType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::AutoType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) clang::DynTypedNode::DynCastPtrConverter<clang::FunctionProtoType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 212 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 212 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 212 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 212 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 144 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 144 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 144 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 144 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ComplexType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 56 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 56 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 56 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 56 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 42 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 42 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 42 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 42 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::SubstTemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 4 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 4 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 4 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 4 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ConstantArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 148 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 148 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 148 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 148 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::OpaqueValueExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 46 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 46 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 46 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 46 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXFunctionalCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 8 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 8 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 8 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 8 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXTemporaryObjectExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 8 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 8 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 8 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 8 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundLiteralExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 21 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 21 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 21 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 21 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DeclaratorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 26 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 26 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 26 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 26 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCPropertyDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 2 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 2 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 2 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 2 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DecltypeType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 16 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 16 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 16 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 16 | } |
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::UsingType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) clang::DynTypedNode::DynCastPtrConverter<clang::AtomicType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 56 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 56 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 56 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 56 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ParenType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 58 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 58 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 58 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 58 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConversionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 50 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 50 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 50 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 50 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDeductionGuideDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 188 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 188 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 188 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 188 | } |
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::BlockPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::MemberPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) clang::DynTypedNode::DynCastPtrConverter<clang::ReferenceType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 307 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 307 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 307 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 307 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXTypeidExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 2 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 2 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 2 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 2 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::GenericSelectionExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 9 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 9 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 9 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 9 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ParenListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 417 | 30 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 418 | 30 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 419 | 0 | return *cast<T>(static_cast<const BaseT *>( | 420 | 30 | *reinterpret_cast<const void *const *>(Storage))); | 421 | 30 | } |
|
422 | 2.41M | static DynTypedNode create(const BaseT &Node) { |
423 | 2.41M | DynTypedNode Result; |
424 | 2.41M | Result.NodeKind = ASTNodeKind::getFromNode(Node); |
425 | 2.41M | new (&Result.Storage) const void *(&Node); |
426 | 2.41M | return Result; |
427 | 2.41M | } clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 1.04M | static DynTypedNode create(const BaseT &Node) { | 423 | 1.04M | DynTypedNode Result; | 424 | 1.04M | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 1.04M | new (&Result.Storage) const void *(&Node); | 426 | 1.04M | return Result; | 427 | 1.04M | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 639k | static DynTypedNode create(const BaseT &Node) { | 423 | 639k | DynTypedNode Result; | 424 | 639k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 639k | new (&Result.Storage) const void *(&Node); | 426 | 639k | return Result; | 427 | 639k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRewrittenBinaryOperator, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 52 | static DynTypedNode create(const BaseT &Node) { | 423 | 52 | DynTypedNode Result; | 424 | 52 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 52 | new (&Result.Storage) const void *(&Node); | 426 | 52 | return Result; | 427 | 52 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 640k | static DynTypedNode create(const BaseT &Node) { | 423 | 640k | DynTypedNode Result; | 424 | 640k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 640k | new (&Result.Storage) const void *(&Node); | 426 | 640k | return Result; | 427 | 640k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Attr, clang::Attr>::create(clang::Attr const&) Line | Count | Source | 422 | 2.42k | static DynTypedNode create(const BaseT &Node) { | 423 | 2.42k | DynTypedNode Result; | 424 | 2.42k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 2.42k | new (&Result.Storage) const void *(&Node); | 426 | 2.42k | return Result; | 427 | 2.42k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 468 | static DynTypedNode create(const BaseT &Node) { | 423 | 468 | DynTypedNode Result; | 424 | 468 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 468 | new (&Result.Storage) const void *(&Node); | 426 | 468 | return Result; | 427 | 468 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::EnumConstantDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 15 | static DynTypedNode create(const BaseT &Node) { | 423 | 15 | DynTypedNode Result; | 424 | 15 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 15 | new (&Result.Storage) const void *(&Node); | 426 | 15 | return Result; | 427 | 15 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 81 | static DynTypedNode create(const BaseT &Node) { | 423 | 81 | DynTypedNode Result; | 424 | 81 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 81 | new (&Result.Storage) const void *(&Node); | 426 | 81 | return Result; | 427 | 81 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 656 | static DynTypedNode create(const BaseT &Node) { | 423 | 656 | DynTypedNode Result; | 424 | 656 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 656 | new (&Result.Storage) const void *(&Node); | 426 | 656 | return Result; | 427 | 656 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 540 | static DynTypedNode create(const BaseT &Node) { | 423 | 540 | DynTypedNode Result; | 424 | 540 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 540 | new (&Result.Storage) const void *(&Node); | 426 | 540 | return Result; | 427 | 540 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 34 | static DynTypedNode create(const BaseT &Node) { | 423 | 34 | DynTypedNode Result; | 424 | 34 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 34 | new (&Result.Storage) const void *(&Node); | 426 | 34 | return Result; | 427 | 34 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 110 | static DynTypedNode create(const BaseT &Node) { | 423 | 110 | DynTypedNode Result; | 424 | 110 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 110 | new (&Result.Storage) const void *(&Node); | 426 | 110 | return Result; | 427 | 110 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 25 | static DynTypedNode create(const BaseT &Node) { | 423 | 25 | DynTypedNode Result; | 424 | 25 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 25 | new (&Result.Storage) const void *(&Node); | 426 | 25 | return Result; | 427 | 25 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 18 | static DynTypedNode create(const BaseT &Node) { | 423 | 18 | DynTypedNode Result; | 424 | 18 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 18 | new (&Result.Storage) const void *(&Node); | 426 | 18 | return Result; | 427 | 18 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 1 | static DynTypedNode create(const BaseT &Node) { | 423 | 1 | DynTypedNode Result; | 424 | 1 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 1 | new (&Result.Storage) const void *(&Node); | 426 | 1 | return Result; | 427 | 1 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 35 | static DynTypedNode create(const BaseT &Node) { | 423 | 35 | DynTypedNode Result; | 424 | 35 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 35 | new (&Result.Storage) const void *(&Node); | 426 | 35 | return Result; | 427 | 35 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 156 | static DynTypedNode create(const BaseT &Node) { | 423 | 156 | DynTypedNode Result; | 424 | 156 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 156 | new (&Result.Storage) const void *(&Node); | 426 | 156 | return Result; | 427 | 156 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 2.35k | static DynTypedNode create(const BaseT &Node) { | 423 | 2.35k | DynTypedNode Result; | 424 | 2.35k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 2.35k | new (&Result.Storage) const void *(&Node); | 426 | 2.35k | return Result; | 427 | 2.35k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 144 | static DynTypedNode create(const BaseT &Node) { | 423 | 144 | DynTypedNode Result; | 424 | 144 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 144 | new (&Result.Storage) const void *(&Node); | 426 | 144 | return Result; | 427 | 144 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 1.19k | static DynTypedNode create(const BaseT &Node) { | 423 | 1.19k | DynTypedNode Result; | 424 | 1.19k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 1.19k | new (&Result.Storage) const void *(&Node); | 426 | 1.19k | return Result; | 427 | 1.19k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 6.36k | static DynTypedNode create(const BaseT &Node) { | 423 | 6.36k | DynTypedNode Result; | 424 | 6.36k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 6.36k | new (&Result.Storage) const void *(&Node); | 426 | 6.36k | return Result; | 427 | 6.36k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::create(clang::Type const&) Line | Count | Source | 422 | 57.6k | static DynTypedNode create(const BaseT &Node) { | 423 | 57.6k | DynTypedNode Result; | 424 | 57.6k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 57.6k | new (&Result.Storage) const void *(&Node); | 426 | 57.6k | return Result; | 427 | 57.6k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 188 | static DynTypedNode create(const BaseT &Node) { | 423 | 188 | DynTypedNode Result; | 424 | 188 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 188 | new (&Result.Storage) const void *(&Node); | 426 | 188 | return Result; | 427 | 188 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 225 | static DynTypedNode create(const BaseT &Node) { | 423 | 225 | DynTypedNode Result; | 424 | 225 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 225 | new (&Result.Storage) const void *(&Node); | 426 | 225 | return Result; | 427 | 225 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 169 | static DynTypedNode create(const BaseT &Node) { | 423 | 169 | DynTypedNode Result; | 424 | 169 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 169 | new (&Result.Storage) const void *(&Node); | 426 | 169 | return Result; | 427 | 169 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 8.57k | static DynTypedNode create(const BaseT &Node) { | 423 | 8.57k | DynTypedNode Result; | 424 | 8.57k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 8.57k | new (&Result.Storage) const void *(&Node); | 426 | 8.57k | return Result; | 427 | 8.57k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 75 | static DynTypedNode create(const BaseT &Node) { | 423 | 75 | DynTypedNode Result; | 424 | 75 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 75 | new (&Result.Storage) const void *(&Node); | 426 | 75 | return Result; | 427 | 75 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 2.10k | static DynTypedNode create(const BaseT &Node) { | 423 | 2.10k | DynTypedNode Result; | 424 | 2.10k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 2.10k | new (&Result.Storage) const void *(&Node); | 426 | 2.10k | return Result; | 427 | 2.10k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 85 | static DynTypedNode create(const BaseT &Node) { | 423 | 85 | DynTypedNode Result; | 424 | 85 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 85 | new (&Result.Storage) const void *(&Node); | 426 | 85 | return Result; | 427 | 85 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchCase, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 23 | static DynTypedNode create(const BaseT &Node) { | 423 | 23 | DynTypedNode Result; | 424 | 23 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 23 | new (&Result.Storage) const void *(&Node); | 426 | 23 | return Result; | 427 | 23 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::BindingDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 14 | static DynTypedNode create(const BaseT &Node) { | 423 | 14 | DynTypedNode Result; | 424 | 14 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 14 | new (&Result.Storage) const void *(&Node); | 426 | 14 | return Result; | 427 | 14 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 2.27k | static DynTypedNode create(const BaseT &Node) { | 423 | 2.27k | DynTypedNode Result; | 424 | 2.27k | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 2.27k | new (&Result.Storage) const void *(&Node); | 426 | 2.27k | return Result; | 427 | 2.27k | } |
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::create(clang::OMPClause const&) Line | Count | Source | 422 | 420 | static DynTypedNode create(const BaseT &Node) { | 423 | 420 | DynTypedNode Result; | 424 | 420 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 420 | new (&Result.Storage) const void *(&Node); | 426 | 420 | return Result; | 427 | 420 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::create(clang::Decl const&) Line | Count | Source | 422 | 699 | static DynTypedNode create(const BaseT &Node) { | 423 | 699 | DynTypedNode Result; | 424 | 699 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 699 | new (&Result.Storage) const void *(&Node); | 426 | 699 | return Result; | 427 | 699 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 170 | static DynTypedNode create(const BaseT &Node) { | 423 | 170 | DynTypedNode Result; | 424 | 170 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 170 | new (&Result.Storage) const void *(&Node); | 426 | 170 | return Result; | 427 | 170 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 42 | static DynTypedNode create(const BaseT &Node) { | 423 | 42 | DynTypedNode Result; | 424 | 42 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 42 | new (&Result.Storage) const void *(&Node); | 426 | 42 | return Result; | 427 | 42 | } |
clang::DynTypedNode::DynCastPtrConverter<clang::ParenListExpr, clang::Stmt>::create(clang::Stmt const&) Line | Count | Source | 422 | 30 | static DynTypedNode create(const BaseT &Node) { | 423 | 30 | DynTypedNode Result; | 424 | 30 | Result.NodeKind = ASTNodeKind::getFromNode(Node); | 425 | 30 | new (&Result.Storage) const void *(&Node); | 426 | 30 | return Result; | 427 | 30 | } |
|
428 | | }; |
429 | | |
430 | | /// Converter that stores T* (by pointer). |
431 | | template <typename T> struct PtrConverter { |
432 | 814 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { |
433 | 814 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) |
434 | 62 | return &getUnchecked(NodeKind, Storage); |
435 | 752 | return nullptr; |
436 | 814 | } clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 432 | 445 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 433 | 445 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 434 | 45 | return &getUnchecked(NodeKind, Storage); | 435 | 400 | return nullptr; | 436 | 445 | } |
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 432 | 368 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 433 | 368 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 434 | 17 | return &getUnchecked(NodeKind, Storage); | 435 | 351 | return nullptr; | 436 | 368 | } |
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 432 | 1 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 433 | 1 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 434 | 0 | return &getUnchecked(NodeKind, Storage); | 435 | 1 | return nullptr; | 436 | 1 | } |
|
437 | 1.10k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { |
438 | 1.10k | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); |
439 | 0 | return *static_cast<const T *>( |
440 | 1.10k | *reinterpret_cast<const void *const *>(Storage)); |
441 | 1.10k | } clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 437 | 337 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 438 | 337 | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 439 | 0 | return *static_cast<const T *>( | 440 | 337 | *reinterpret_cast<const void *const *>(Storage)); | 441 | 337 | } |
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 437 | 233 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 438 | 233 | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 439 | 0 | return *static_cast<const T *>( | 440 | 233 | *reinterpret_cast<const void *const *>(Storage)); | 441 | 233 | } |
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 437 | 530 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 438 | 530 | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 439 | 0 | return *static_cast<const T *>( | 440 | 530 | *reinterpret_cast<const void *const *>(Storage)); | 441 | 530 | } |
|
442 | 2.26k | static DynTypedNode create(const T &Node) { |
443 | 2.26k | DynTypedNode Result; |
444 | 2.26k | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); |
445 | 2.26k | new (&Result.Storage) const void *(&Node); |
446 | 2.26k | return Result; |
447 | 2.26k | } clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::create(clang::CXXBaseSpecifier const&) Line | Count | Source | 442 | 572 | static DynTypedNode create(const T &Node) { | 443 | 572 | DynTypedNode Result; | 444 | 572 | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 445 | 572 | new (&Result.Storage) const void *(&Node); | 446 | 572 | return Result; | 447 | 572 | } |
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::create(clang::NestedNameSpecifier const&) Line | Count | Source | 442 | 1.33k | static DynTypedNode create(const T &Node) { | 443 | 1.33k | DynTypedNode Result; | 444 | 1.33k | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 445 | 1.33k | new (&Result.Storage) const void *(&Node); | 446 | 1.33k | return Result; | 447 | 1.33k | } |
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::create(clang::CXXCtorInitializer const&) Line | Count | Source | 442 | 357 | static DynTypedNode create(const T &Node) { | 443 | 357 | DynTypedNode Result; | 444 | 357 | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 445 | 357 | new (&Result.Storage) const void *(&Node); | 446 | 357 | return Result; | 447 | 357 | } |
|
448 | | }; |
449 | | |
450 | | /// Converter that stores T (by value). |
451 | | template <typename T> struct ValueConverter { |
452 | 6.00k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { |
453 | 6.00k | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) |
454 | 492 | return reinterpret_cast<const T *>(Storage); |
455 | 5.51k | return nullptr; |
456 | 6.00k | } clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 452 | 33 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 453 | 33 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 454 | 25 | return reinterpret_cast<const T *>(Storage); | 455 | 8 | return nullptr; | 456 | 33 | } |
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 452 | 29 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 453 | 29 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 454 | 20 | return reinterpret_cast<const T *>(Storage); | 455 | 9 | return nullptr; | 456 | 29 | } |
clang::DynTypedNode::ValueConverter<clang::TemplateName>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 452 | 8 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 453 | 8 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 454 | 0 | return reinterpret_cast<const T *>(Storage); | 455 | 8 | return nullptr; | 456 | 8 | } |
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 452 | 5.63k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 453 | 5.63k | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 454 | 174 | return reinterpret_cast<const T *>(Storage); | 455 | 5.46k | return nullptr; | 456 | 5.63k | } |
clang::DynTypedNode::ValueConverter<clang::QualType>::get(clang::ASTNodeKind, void const*) Line | Count | Source | 452 | 299 | static const T *get(ASTNodeKind NodeKind, const void *Storage) { | 453 | 299 | if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)) | 454 | 273 | return reinterpret_cast<const T *>(Storage); | 455 | 26 | return nullptr; | 456 | 299 | } |
Unexecuted instantiation: clang::DynTypedNode::ValueConverter<clang::ObjCProtocolLoc>::get(clang::ASTNodeKind, void const*) |
457 | 398k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { |
458 | 398k | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); |
459 | 0 | return *reinterpret_cast<const T *>(Storage); |
460 | 398k | } clang::DynTypedNode::ValueConverter<clang::QualType>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 457 | 44.0k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 458 | 44.0k | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 459 | 0 | return *reinterpret_cast<const T *>(Storage); | 460 | 44.0k | } |
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 457 | 349k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 458 | 349k | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 459 | 0 | return *reinterpret_cast<const T *>(Storage); | 460 | 349k | } |
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 457 | 4.16k | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 458 | 4.16k | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 459 | 0 | return *reinterpret_cast<const T *>(Storage); | 460 | 4.16k | } |
clang::DynTypedNode::ValueConverter<clang::LambdaCapture>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 457 | 298 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 458 | 298 | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 459 | 0 | return *reinterpret_cast<const T *>(Storage); | 460 | 298 | } |
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 457 | 42 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 458 | 42 | assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind)); | 459 | 0 | return *reinterpret_cast<const T *>(Storage); | 460 | 42 | } |
|
461 | 526k | static DynTypedNode create(const T &Node) { |
462 | 526k | DynTypedNode Result; |
463 | 526k | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); |
464 | 526k | new (&Result.Storage) T(Node); |
465 | 526k | return Result; |
466 | 526k | } clang::DynTypedNode::ValueConverter<clang::ObjCProtocolLoc>::create(clang::ObjCProtocolLoc const&) Line | Count | Source | 461 | 12 | static DynTypedNode create(const T &Node) { | 462 | 12 | DynTypedNode Result; | 463 | 12 | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 464 | 12 | new (&Result.Storage) T(Node); | 465 | 12 | return Result; | 466 | 12 | } |
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::create(clang::NestedNameSpecifierLoc const&) Line | Count | Source | 461 | 457k | static DynTypedNode create(const T &Node) { | 462 | 457k | DynTypedNode Result; | 463 | 457k | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 464 | 457k | new (&Result.Storage) T(Node); | 465 | 457k | return Result; | 466 | 457k | } |
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::create(clang::TemplateArgumentLoc const&) Line | Count | Source | 461 | 831 | static DynTypedNode create(const T &Node) { | 462 | 831 | DynTypedNode Result; | 463 | 831 | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 464 | 831 | new (&Result.Storage) T(Node); | 465 | 831 | return Result; | 466 | 831 | } |
clang::DynTypedNode::ValueConverter<clang::QualType>::create(clang::QualType const&) Line | Count | Source | 461 | 63.1k | static DynTypedNode create(const T &Node) { | 462 | 63.1k | DynTypedNode Result; | 463 | 63.1k | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 464 | 63.1k | new (&Result.Storage) T(Node); | 465 | 63.1k | return Result; | 466 | 63.1k | } |
clang::DynTypedNode::ValueConverter<clang::TemplateName>::create(clang::TemplateName const&) Line | Count | Source | 461 | 2 | static DynTypedNode create(const T &Node) { | 462 | 2 | DynTypedNode Result; | 463 | 2 | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 464 | 2 | new (&Result.Storage) T(Node); | 465 | 2 | return Result; | 466 | 2 | } |
clang::DynTypedNode::ValueConverter<clang::LambdaCapture>::create(clang::LambdaCapture const&) Line | Count | Source | 461 | 298 | static DynTypedNode create(const T &Node) { | 462 | 298 | DynTypedNode Result; | 463 | 298 | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 464 | 298 | new (&Result.Storage) T(Node); | 465 | 298 | return Result; | 466 | 298 | } |
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::create(clang::TemplateArgument const&) Line | Count | Source | 461 | 4.19k | static DynTypedNode create(const T &Node) { | 462 | 4.19k | DynTypedNode Result; | 463 | 4.19k | Result.NodeKind = ASTNodeKind::getFromNodeKind<T>(); | 464 | 4.19k | new (&Result.Storage) T(Node); | 465 | 4.19k | return Result; | 466 | 4.19k | } |
|
467 | | }; |
468 | | |
469 | | /// Converter that stores nodes by value. It must be possible to dynamically |
470 | | /// cast the stored node within a type hierarchy without breaking (especially |
471 | | /// through slicing). |
472 | | template <typename T, typename BaseT, |
473 | | typename = std::enable_if_t<(sizeof(T) == sizeof(BaseT))>> |
474 | | struct DynCastValueConverter { |
475 | 5.55k | static const T *get(ASTNodeKind NodeKind, const void *Storage) { |
476 | 5.55k | if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)) |
477 | 2.48k | return &getUnchecked(NodeKind, Storage); |
478 | 3.06k | return nullptr; |
479 | 5.55k | } |
480 | 1.69M | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { |
481 | 1.69M | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); |
482 | 0 | return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage)); |
483 | 1.69M | } clang::DynTypedNode::DynCastValueConverter<clang::TypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 480 | 1.69M | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 481 | 1.69M | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 482 | 0 | return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage)); | 483 | 1.69M | } |
clang::DynTypedNode::DynCastValueConverter<clang::QualifiedTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 480 | 18 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 481 | 18 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 482 | 0 | return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage)); | 483 | 18 | } |
clang::DynTypedNode::DynCastValueConverter<clang::PointerTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 480 | 41 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 481 | 41 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 482 | 0 | return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage)); | 483 | 41 | } |
clang::DynTypedNode::DynCastValueConverter<clang::ReferenceTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 480 | 28 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 481 | 28 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 482 | 0 | return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage)); | 483 | 28 | } |
clang::DynTypedNode::DynCastValueConverter<clang::TemplateSpecializationTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 480 | 46 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 481 | 46 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 482 | 0 | return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage)); | 483 | 46 | } |
clang::DynTypedNode::DynCastValueConverter<clang::ElaboratedTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*) Line | Count | Source | 480 | 4 | static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) { | 481 | 4 | assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind)); | 482 | 0 | return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage)); | 483 | 4 | } |
|
484 | 1.26M | static DynTypedNode create(const T &Node) { |
485 | 1.26M | DynTypedNode Result; |
486 | 1.26M | Result.NodeKind = ASTNodeKind::getFromNode(Node); |
487 | 1.26M | new (&Result.Storage) T(Node); |
488 | 1.26M | return Result; |
489 | 1.26M | } |
490 | | }; |
491 | | |
492 | | ASTNodeKind NodeKind; |
493 | | |
494 | | /// Stores the data of the node. |
495 | | /// |
496 | | /// Note that we can store \c Decls, \c Stmts, \c Types, |
497 | | /// \c NestedNameSpecifiers and \c CXXCtorInitializer by pointer as they are |
498 | | /// guaranteed to be unique pointers pointing to dedicated storage in the AST. |
499 | | /// \c QualTypes, \c NestedNameSpecifierLocs, \c TypeLocs, |
500 | | /// \c TemplateArguments and \c TemplateArgumentLocs on the other hand do not |
501 | | /// have storage or unique pointers and thus need to be stored by value. |
502 | | llvm::AlignedCharArrayUnion<const void *, TemplateArgument, |
503 | | TemplateArgumentLoc, NestedNameSpecifierLoc, |
504 | | QualType, TypeLoc, ObjCProtocolLoc> |
505 | | Storage; |
506 | | }; |
507 | | |
508 | | template <typename T> |
509 | | struct DynTypedNode::BaseConverter< |
510 | | T, std::enable_if_t<std::is_base_of<Decl, T>::value>> |
511 | | : public DynCastPtrConverter<T, Decl> {}; |
512 | | |
513 | | template <typename T> |
514 | | struct DynTypedNode::BaseConverter< |
515 | | T, std::enable_if_t<std::is_base_of<Stmt, T>::value>> |
516 | | : public DynCastPtrConverter<T, Stmt> {}; |
517 | | |
518 | | template <typename T> |
519 | | struct DynTypedNode::BaseConverter< |
520 | | T, std::enable_if_t<std::is_base_of<Type, T>::value>> |
521 | | : public DynCastPtrConverter<T, Type> {}; |
522 | | |
523 | | template <typename T> |
524 | | struct DynTypedNode::BaseConverter< |
525 | | T, std::enable_if_t<std::is_base_of<OMPClause, T>::value>> |
526 | | : public DynCastPtrConverter<T, OMPClause> {}; |
527 | | |
528 | | template <typename T> |
529 | | struct DynTypedNode::BaseConverter< |
530 | | T, std::enable_if_t<std::is_base_of<Attr, T>::value>> |
531 | | : public DynCastPtrConverter<T, Attr> {}; |
532 | | |
533 | | template <> |
534 | | struct DynTypedNode::BaseConverter< |
535 | | NestedNameSpecifier, void> : public PtrConverter<NestedNameSpecifier> {}; |
536 | | |
537 | | template <> |
538 | | struct DynTypedNode::BaseConverter< |
539 | | CXXCtorInitializer, void> : public PtrConverter<CXXCtorInitializer> {}; |
540 | | |
541 | | template <> |
542 | | struct DynTypedNode::BaseConverter< |
543 | | TemplateArgument, void> : public ValueConverter<TemplateArgument> {}; |
544 | | |
545 | | template <> |
546 | | struct DynTypedNode::BaseConverter<TemplateArgumentLoc, void> |
547 | | : public ValueConverter<TemplateArgumentLoc> {}; |
548 | | |
549 | | template <> |
550 | | struct DynTypedNode::BaseConverter<LambdaCapture, void> |
551 | | : public ValueConverter<LambdaCapture> {}; |
552 | | |
553 | | template <> |
554 | | struct DynTypedNode::BaseConverter< |
555 | | TemplateName, void> : public ValueConverter<TemplateName> {}; |
556 | | |
557 | | template <> |
558 | | struct DynTypedNode::BaseConverter< |
559 | | NestedNameSpecifierLoc, |
560 | | void> : public ValueConverter<NestedNameSpecifierLoc> {}; |
561 | | |
562 | | template <> |
563 | | struct DynTypedNode::BaseConverter<QualType, |
564 | | void> : public ValueConverter<QualType> {}; |
565 | | |
566 | | template <typename T> |
567 | | struct DynTypedNode::BaseConverter< |
568 | | T, std::enable_if_t<std::is_base_of<TypeLoc, T>::value>> |
569 | | : public DynCastValueConverter<T, TypeLoc> {}; |
570 | | |
571 | | template <> |
572 | | struct DynTypedNode::BaseConverter<CXXBaseSpecifier, void> |
573 | | : public PtrConverter<CXXBaseSpecifier> {}; |
574 | | |
575 | | template <> |
576 | | struct DynTypedNode::BaseConverter<ObjCProtocolLoc, void> |
577 | | : public ValueConverter<ObjCProtocolLoc> {}; |
578 | | |
579 | | // The only operation we allow on unsupported types is \c get. |
580 | | // This allows to conveniently use \c DynTypedNode when having an arbitrary |
581 | | // AST node that is not supported, but prevents misuse - a user cannot create |
582 | | // a DynTypedNode from arbitrary types. |
583 | | template <typename T, typename EnablerT> struct DynTypedNode::BaseConverter { |
584 | | static const T *get(ASTNodeKind NodeKind, const char Storage[]) { |
585 | | return NULL; |
586 | | } |
587 | | }; |
588 | | |
589 | | } // end namespace clang |
590 | | |
591 | | namespace llvm { |
592 | | |
593 | | template <> |
594 | | struct DenseMapInfo<clang::ASTNodeKind> : clang::ASTNodeKind::DenseMapInfo {}; |
595 | | |
596 | | template <> |
597 | | struct DenseMapInfo<clang::DynTypedNode> : clang::DynTypedNode::DenseMapInfo {}; |
598 | | |
599 | | } // end namespace llvm |
600 | | |
601 | | #endif |