clang: include/clang/AST/UnresolvedSet.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_CLANG_AST_UNRESOLVEDSET_H

15#define LLVM_CLANG_AST_UNRESOLVEDSET_H

16

20#include "llvm/ADT/ArrayRef.h"

21#include "llvm/ADT/SmallVector.h"

22#include "llvm/ADT/iterator.h"

23#include

24#include

25

27

28class NamedDecl;

29

30

31

33 UnresolvedSetIterator, DeclAccessPair *,

34 std::random_access_iterator_tag, NamedDecl *,

35 std::ptrdiff_t, NamedDecl *, NamedDecl *> {

39

41 : iterator_adaptor_base(Iter) {}

44

45public:

46

47

49

50 uint64_t getDeclID() const { return I->getDeclID(); }

56

59};

60

61

64

65

66

67private:

69

73

76

77public:

78

79

82

85

88

90

93 }

94

97 }

98

99

100

101

103 for (DeclsTy::iterator I = decls().begin(), E = decls().end(); I != E; ++I)

104 if (I->getDecl() == Old)

105 return (I->setDecl(New), true);

106 return false;

107 }

108

109

110

112

114 I.I->set(New, AS);

115 }

116

118 auto val = decls().pop_back_val();

119 if (I < size())

120 decls()[I] = val;

121 }

122

124 auto val = decls().pop_back_val();

125 if (I != end())

126 *I.I = val;

127 }

128

130

131 void clear() { decls().clear(); }

132 void truncate(unsigned N) { decls().truncate(N); }

133

134 bool empty() const { return decls().empty(); }

135 unsigned size() const { return decls().size(); }

136

138

139 template void assign(Iter I, Iter E) { decls().assign(I, E); }

140

143

144private:

145

146

147 DeclsTy &decls() {

148 return *reinterpret_cast<DeclsTy*>(this);

149 }

150 const DeclsTy &decls() const {

151 return *reinterpret_cast<const DeclsTy*>(this);

152 }

153};

154

155

159};

160

161

162}

163

164#endif

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

Defines various enumerations that describe declaration and type specifiers.

An UnresolvedSet-like class which uses the ASTContext's allocator.

A POD class for pairing a NamedDecl* with an access specifier.

static DeclAccessPair make(NamedDecl *D, AccessSpecifier AS)

void setAccess(AccessSpecifier AS)

This represents a decl that may have a name.

A reference to an overloaded function set, either an UnresolvedLookupExpr or an UnresolvedMemberExpr.

A set of unresolved declarations.

bool replace(const NamedDecl *Old, NamedDecl *New)

Replaces the given declaration with the new one, once.

DeclAccessPair & operator[](unsigned I)

const_iterator end() const

void addDecl(NamedDecl *D, AccessSpecifier AS)

const DeclAccessPair & operator[](unsigned I) const

void replace(iterator I, NamedDecl *New, AccessSpecifier AS)

void setAccess(iterator I, AccessSpecifier AS)

void replace(iterator I, NamedDecl *New)

Replaces the declaration at the given iterator with the new one, preserving the original access bits.

const_iterator begin() const

void assign(Iter I, Iter E)

ArrayRef< DeclAccessPair > pairs() const

UnresolvedSetIterator iterator

void append(iterator I, iterator E)

void truncate(unsigned N)

void addDecl(NamedDecl *D)

UnresolvedSetIterator const_iterator

The iterator over UnresolvedSets.

NamedDecl * operator->() const

NamedDecl * getDecl() const

const DeclAccessPair & getPair() const

AccessSpecifier getAccess() const

void setDecl(NamedDecl *ND) const

void setAccess(AccessSpecifier AS)

uint64_t getDeclID() const

NamedDecl * operator*() const

A set of unresolved declarations.

The JSON file list parser is used to communicate input to InstallAPI.

AccessSpecifier

A C++ access specifier (public, private, protected), plus the special value "none" which means differ...