annotate clang/lib/AST/ExternalASTSource.cpp @ 176:de4ac79aef9d

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 17:13:11 +0900
parents 0572611fdcc8
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 //===- ExternalASTSource.cpp - Abstract External AST Interface ------------===//
anatofuz
parents:
diff changeset
2 //
anatofuz
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
6 //
anatofuz
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
8 //
anatofuz
parents:
diff changeset
9 // This file provides the default implementation of the ExternalASTSource
anatofuz
parents:
diff changeset
10 // interface, which enables construction of AST nodes from some external
anatofuz
parents:
diff changeset
11 // source.
anatofuz
parents:
diff changeset
12 //
anatofuz
parents:
diff changeset
13 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 #include "clang/AST/ExternalASTSource.h"
anatofuz
parents:
diff changeset
16 #include "clang/AST/ASTContext.h"
anatofuz
parents:
diff changeset
17 #include "clang/AST/DeclarationName.h"
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
18 #include "clang/Basic/FileManager.h"
150
anatofuz
parents:
diff changeset
19 #include "clang/Basic/IdentifierTable.h"
anatofuz
parents:
diff changeset
20 #include "clang/Basic/LLVM.h"
anatofuz
parents:
diff changeset
21 #include "clang/Basic/Module.h"
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
22 #include "clang/Basic/SourceManager.h"
150
anatofuz
parents:
diff changeset
23 #include "llvm/ADT/None.h"
anatofuz
parents:
diff changeset
24 #include "llvm/Support/ErrorHandling.h"
anatofuz
parents:
diff changeset
25 #include <cstdint>
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 using namespace clang;
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 char ExternalASTSource::ID;
anatofuz
parents:
diff changeset
30
anatofuz
parents:
diff changeset
31 ExternalASTSource::~ExternalASTSource() = default;
anatofuz
parents:
diff changeset
32
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
33 llvm::Optional<ASTSourceDescriptor>
150
anatofuz
parents:
diff changeset
34 ExternalASTSource::getSourceDescriptor(unsigned ID) {
anatofuz
parents:
diff changeset
35 return None;
anatofuz
parents:
diff changeset
36 }
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38 ExternalASTSource::ExtKind
anatofuz
parents:
diff changeset
39 ExternalASTSource::hasExternalDefinitions(const Decl *D) {
anatofuz
parents:
diff changeset
40 return EK_ReplyHazy;
anatofuz
parents:
diff changeset
41 }
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 void ExternalASTSource::FindFileRegionDecls(FileID File, unsigned Offset,
anatofuz
parents:
diff changeset
44 unsigned Length,
anatofuz
parents:
diff changeset
45 SmallVectorImpl<Decl *> &Decls) {}
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 void ExternalASTSource::CompleteRedeclChain(const Decl *D) {}
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49 void ExternalASTSource::CompleteType(TagDecl *Tag) {}
anatofuz
parents:
diff changeset
50
anatofuz
parents:
diff changeset
51 void ExternalASTSource::CompleteType(ObjCInterfaceDecl *Class) {}
anatofuz
parents:
diff changeset
52
anatofuz
parents:
diff changeset
53 void ExternalASTSource::ReadComments() {}
anatofuz
parents:
diff changeset
54
anatofuz
parents:
diff changeset
55 void ExternalASTSource::StartedDeserializing() {}
anatofuz
parents:
diff changeset
56
anatofuz
parents:
diff changeset
57 void ExternalASTSource::FinishedDeserializing() {}
anatofuz
parents:
diff changeset
58
anatofuz
parents:
diff changeset
59 void ExternalASTSource::StartTranslationUnit(ASTConsumer *Consumer) {}
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 void ExternalASTSource::PrintStats() {}
anatofuz
parents:
diff changeset
62
anatofuz
parents:
diff changeset
63 bool ExternalASTSource::layoutRecordType(
anatofuz
parents:
diff changeset
64 const RecordDecl *Record, uint64_t &Size, uint64_t &Alignment,
anatofuz
parents:
diff changeset
65 llvm::DenseMap<const FieldDecl *, uint64_t> &FieldOffsets,
anatofuz
parents:
diff changeset
66 llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
anatofuz
parents:
diff changeset
67 llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets) {
anatofuz
parents:
diff changeset
68 return false;
anatofuz
parents:
diff changeset
69 }
anatofuz
parents:
diff changeset
70
anatofuz
parents:
diff changeset
71 Decl *ExternalASTSource::GetExternalDecl(uint32_t ID) {
anatofuz
parents:
diff changeset
72 return nullptr;
anatofuz
parents:
diff changeset
73 }
anatofuz
parents:
diff changeset
74
anatofuz
parents:
diff changeset
75 Selector ExternalASTSource::GetExternalSelector(uint32_t ID) {
anatofuz
parents:
diff changeset
76 return Selector();
anatofuz
parents:
diff changeset
77 }
anatofuz
parents:
diff changeset
78
anatofuz
parents:
diff changeset
79 uint32_t ExternalASTSource::GetNumExternalSelectors() {
anatofuz
parents:
diff changeset
80 return 0;
anatofuz
parents:
diff changeset
81 }
anatofuz
parents:
diff changeset
82
anatofuz
parents:
diff changeset
83 Stmt *ExternalASTSource::GetExternalDeclStmt(uint64_t Offset) {
anatofuz
parents:
diff changeset
84 return nullptr;
anatofuz
parents:
diff changeset
85 }
anatofuz
parents:
diff changeset
86
anatofuz
parents:
diff changeset
87 CXXCtorInitializer **
anatofuz
parents:
diff changeset
88 ExternalASTSource::GetExternalCXXCtorInitializers(uint64_t Offset) {
anatofuz
parents:
diff changeset
89 return nullptr;
anatofuz
parents:
diff changeset
90 }
anatofuz
parents:
diff changeset
91
anatofuz
parents:
diff changeset
92 CXXBaseSpecifier *
anatofuz
parents:
diff changeset
93 ExternalASTSource::GetExternalCXXBaseSpecifiers(uint64_t Offset) {
anatofuz
parents:
diff changeset
94 return nullptr;
anatofuz
parents:
diff changeset
95 }
anatofuz
parents:
diff changeset
96
anatofuz
parents:
diff changeset
97 bool
anatofuz
parents:
diff changeset
98 ExternalASTSource::FindExternalVisibleDeclsByName(const DeclContext *DC,
anatofuz
parents:
diff changeset
99 DeclarationName Name) {
anatofuz
parents:
diff changeset
100 return false;
anatofuz
parents:
diff changeset
101 }
anatofuz
parents:
diff changeset
102
anatofuz
parents:
diff changeset
103 void ExternalASTSource::completeVisibleDeclsMap(const DeclContext *DC) {}
anatofuz
parents:
diff changeset
104
anatofuz
parents:
diff changeset
105 void ExternalASTSource::FindExternalLexicalDecls(
anatofuz
parents:
diff changeset
106 const DeclContext *DC, llvm::function_ref<bool(Decl::Kind)> IsKindWeWant,
anatofuz
parents:
diff changeset
107 SmallVectorImpl<Decl *> &Result) {}
anatofuz
parents:
diff changeset
108
anatofuz
parents:
diff changeset
109 void ExternalASTSource::getMemoryBufferSizes(MemoryBufferSizes &sizes) const {}
anatofuz
parents:
diff changeset
110
anatofuz
parents:
diff changeset
111 uint32_t ExternalASTSource::incrementGeneration(ASTContext &C) {
anatofuz
parents:
diff changeset
112 uint32_t OldGeneration = CurrentGeneration;
anatofuz
parents:
diff changeset
113
anatofuz
parents:
diff changeset
114 // Make sure the generation of the topmost external source for the context is
anatofuz
parents:
diff changeset
115 // incremented. That might not be us.
anatofuz
parents:
diff changeset
116 auto *P = C.getExternalSource();
anatofuz
parents:
diff changeset
117 if (P && P != this)
anatofuz
parents:
diff changeset
118 CurrentGeneration = P->incrementGeneration(C);
anatofuz
parents:
diff changeset
119 else {
anatofuz
parents:
diff changeset
120 // FIXME: Only bump the generation counter if the current generation number
anatofuz
parents:
diff changeset
121 // has been observed?
anatofuz
parents:
diff changeset
122 if (!++CurrentGeneration)
anatofuz
parents:
diff changeset
123 llvm::report_fatal_error("generation counter overflowed", false);
anatofuz
parents:
diff changeset
124 }
anatofuz
parents:
diff changeset
125
anatofuz
parents:
diff changeset
126 return OldGeneration;
anatofuz
parents:
diff changeset
127 }