blob: ae8297cecd1bcf4d0b1e08c752ac37c3947d411f [file] [log] [blame]
Axel Naumannaa627ba2011-02-28 11:22:50 +00001//===- ExternalASTSource.cpp - Abstract External AST Interface --*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file provides the default implementation of the ExternalASTSource
11// interface, which enables construction of AST nodes from some external
12// source.
13//
14//===----------------------------------------------------------------------===//
15
16#include "clang/AST/ExternalASTSource.h"
Richard Smith053f6c62014-05-16 23:01:30 +000017#include "clang/AST/ASTContext.h"
Axel Naumannaa627ba2011-02-28 11:22:50 +000018#include "clang/AST/DeclarationName.h"
Richard Smith053f6c62014-05-16 23:01:30 +000019#include "llvm/Support/ErrorHandling.h"
Axel Naumannaa627ba2011-02-28 11:22:50 +000020
21using namespace clang;
22
23ExternalASTSource::~ExternalASTSource() { }
24
25void ExternalASTSource::PrintStats() { }
26
27Decl *ExternalASTSource::GetExternalDecl(uint32_t ID) {
Craig Topper36250ad2014-05-12 05:36:57 +000028 return nullptr;
Axel Naumannaa627ba2011-02-28 11:22:50 +000029}
30
31Selector ExternalASTSource::GetExternalSelector(uint32_t ID) {
32 return Selector();
33}
34
35uint32_t ExternalASTSource::GetNumExternalSelectors() {
36 return 0;
37}
38
39Stmt *ExternalASTSource::GetExternalDeclStmt(uint64_t Offset) {
Craig Topper36250ad2014-05-12 05:36:57 +000040 return nullptr;
Axel Naumannaa627ba2011-02-28 11:22:50 +000041}
42
43CXXBaseSpecifier *
44ExternalASTSource::GetExternalCXXBaseSpecifiers(uint64_t Offset) {
Craig Topper36250ad2014-05-12 05:36:57 +000045 return nullptr;
Axel Naumannaa627ba2011-02-28 11:22:50 +000046}
47
Richard Smith9ce12e32013-02-07 03:30:24 +000048bool
Axel Naumannaa627ba2011-02-28 11:22:50 +000049ExternalASTSource::FindExternalVisibleDeclsByName(const DeclContext *DC,
50 DeclarationName Name) {
Richard Smith9ce12e32013-02-07 03:30:24 +000051 return false;
Axel Naumannaa627ba2011-02-28 11:22:50 +000052}
53
Nick Lewycky2bd0ab22012-04-16 02:51:46 +000054void ExternalASTSource::completeVisibleDeclsMap(const DeclContext *DC) {
55}
56
57ExternalLoadResult
Axel Naumannaa627ba2011-02-28 11:22:50 +000058ExternalASTSource::FindExternalLexicalDecls(const DeclContext *DC,
59 bool (*isKindWeWant)(Decl::Kind),
Chris Lattner0e62c1c2011-07-23 10:55:15 +000060 SmallVectorImpl<Decl*> &Result) {
Douglas Gregor3d0adb32011-07-15 21:46:17 +000061 return ELR_AlreadyLoaded;
Axel Naumannaa627ba2011-02-28 11:22:50 +000062}
Axel Naumanned35df12011-05-04 12:59:24 +000063
64void ExternalASTSource::getMemoryBufferSizes(MemoryBufferSizes &sizes) const { }
Richard Smith053f6c62014-05-16 23:01:30 +000065
66uint32_t ExternalASTSource::incrementGeneration(ASTContext &C) {
67 uint32_t OldGeneration = CurrentGeneration;
68
69 // Make sure the generation of the topmost external source for the context is
70 // incremented. That might not be us.
71 auto *P = C.getExternalSource();
72 if (P && P != this)
73 CurrentGeneration = P->incrementGeneration(C);
74 else {
75 // FIXME: Only bump the generation counter if the current generation number
76 // has been observed?
77 if (!++CurrentGeneration)
78 llvm::report_fatal_error("generation counter overflowed", false);
79 }
80
81 return OldGeneration;
82}