clang: lib/Lex/PPConditionalDirectiveRecord.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

14#include "llvm/Support/Capacity.h"

15

16using namespace clang;

17

19 : SourceMgr(SM) {

21}

22

26 return false;

27

28 CondDirectiveLocsTy::const_iterator low = llvm::lower_bound(

30 if (low == CondDirectiveLocs.end())

31 return false;

32

34 return false;

35

36 CondDirectiveLocsTy::const_iterator

37 upp = std::upper_bound(low, CondDirectiveLocs.end(),

40 if (upp != CondDirectiveLocs.end())

41 uppRegion = upp->getRegionLoc();

42

43 return low->getRegionLoc() != uppRegion;

44}

45

50 if (CondDirectiveLocs.empty())

52

55 return CondDirectiveStack.back();

56

57 CondDirectiveLocsTy::const_iterator low = llvm::lower_bound(

59 assert(low != CondDirectiveLocs.end());

60 return low->getRegionLoc();

61}

62

63void PPConditionalDirectiveRecord::addCondDirectiveLoc(

64 CondDirectiveLoc DirLoc) {

65

67 return;

68

69 assert(CondDirectiveLocs.empty() ||

71 DirLoc.getLoc()));

72 CondDirectiveLocs.push_back(DirLoc);

73}

74

77 ConditionValueKind ConditionValue) {

78 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

79 CondDirectiveStack.push_back(Loc);

80}

81

83 const Token &MacroNameTok,

85 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

86 CondDirectiveStack.push_back(Loc);

87}

88

90 const Token &MacroNameTok,

92 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

93 CondDirectiveStack.push_back(Loc);

94}

95

98 ConditionValueKind ConditionValue,

100 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

101 CondDirectiveStack.back() = Loc;

102}

103

106 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

107 CondDirectiveStack.back() = Loc;

108}

111 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

112 CondDirectiveStack.back() = Loc;

113}

114

117 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

118 CondDirectiveStack.back() = Loc;

119}

122 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

123 CondDirectiveStack.back() = Loc;

124}

125

128 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

129 CondDirectiveStack.back() = Loc;

130}

131

134 addCondDirectiveLoc(CondDirectiveLoc(Loc, CondDirectiveStack.back()));

135 assert(!CondDirectiveStack.empty());

136 CondDirectiveStack.pop_back();

137}

138

140 return llvm::capacity_in_bytes(CondDirectiveLocs);

141}

A description of the current definition of a macro.

size_t getTotalMemory() const

PPConditionalDirectiveRecord(SourceManager &SM)

Construct a new preprocessing record.

bool rangeIntersectsConditionalDirective(SourceRange Range) const

Returns true if the given range intersects with a conditional directive.

SourceLocation findConditionalDirectiveRegionLoc(SourceLocation Loc) const

Encodes a location in the source.

This class handles loading and caching of source files into memory.

bool isInSystemHeader(SourceLocation Loc) const

Returns if a SourceLocation is in a system header.

bool isBeforeInTranslationUnit(SourceLocation LHS, SourceLocation RHS) const

Determines the order of 2 source locations in the translation unit.

A trivial tuple used to represent a source range.

SourceLocation getEnd() const

SourceLocation getBegin() const

Token - This structure provides full information about a lexed token.

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