Constify argument of Preprocessor::getMacroInfoHistory and propagate to

callers, removing unneeded const_cast

llvm-svn: 172372
This commit is contained in:
Dmitri Gribenko 2013-01-14 00:36:42 +00:00
parent 97e3df087d
commit 049a4ffcb8
6 changed files with 10 additions and 9 deletions

View File

@ -307,7 +307,7 @@ class Preprocessor : public RefCountedBase<Preprocessor> {
/// Macros - For each IdentifierInfo that was associated with a macro, we /// Macros - For each IdentifierInfo that was associated with a macro, we
/// keep a mapping to the history of all macro definitions and #undefs in /// keep a mapping to the history of all macro definitions and #undefs in
/// the reverse order (the latest one is in the head of the list). /// the reverse order (the latest one is in the head of the list).
llvm::DenseMap<IdentifierInfo*, MacroInfo*> Macros; llvm::DenseMap<const IdentifierInfo*, MacroInfo*> Macros;
friend class ASTReader; friend class ASTReader;
/// \brief Macros that we want to warn because they are not used at the end /// \brief Macros that we want to warn because they are not used at the end
@ -520,7 +520,7 @@ public:
/// representing the most recent macro definition. One can iterate over all /// representing the most recent macro definition. One can iterate over all
/// previous macro definitions from it. This method should only be called for /// previous macro definitions from it. This method should only be called for
/// identifiers that hadMacroDefinition(). /// identifiers that hadMacroDefinition().
MacroInfo *getMacroInfoHistory(IdentifierInfo *II) const; MacroInfo *getMacroInfoHistory(const IdentifierInfo *II) const;
/// \brief Specify a macro for this identifier. /// \brief Specify a macro for this identifier.
void setMacroInfo(IdentifierInfo *II, MacroInfo *MI); void setMacroInfo(IdentifierInfo *II, MacroInfo *MI);
@ -537,7 +537,7 @@ public:
/// history table. Currently defined macros have /// history table. Currently defined macros have
/// IdentifierInfo::hasMacroDefinition() set and an empty /// IdentifierInfo::hasMacroDefinition() set and an empty
/// MacroInfo::getUndefLoc() at the head of the list. /// MacroInfo::getUndefLoc() at the head of the list.
typedef llvm::DenseMap<IdentifierInfo*, typedef llvm::DenseMap<const IdentifierInfo *,
MacroInfo*>::const_iterator macro_iterator; MacroInfo*>::const_iterator macro_iterator;
macro_iterator macro_begin(bool IncludeExternalMacros = true) const; macro_iterator macro_begin(bool IncludeExternalMacros = true) const;
macro_iterator macro_end(bool IncludeExternalMacros = true) const; macro_iterator macro_end(bool IncludeExternalMacros = true) const;

View File

@ -661,7 +661,7 @@ public:
CodeCompletionString *Pattern; CodeCompletionString *Pattern;
/// \brief When Kind == RK_Macro, the identifier that refers to a macro. /// \brief When Kind == RK_Macro, the identifier that refers to a macro.
IdentifierInfo *Macro; const IdentifierInfo *Macro;
}; };
/// \brief The priority of this particular code-completion result. /// \brief The priority of this particular code-completion result.
@ -728,7 +728,8 @@ public:
} }
/// \brief Build a result that refers to a macro. /// \brief Build a result that refers to a macro.
CodeCompletionResult(IdentifierInfo *Macro, unsigned Priority = CCP_Macro) CodeCompletionResult(const IdentifierInfo *Macro,
unsigned Priority = CCP_Macro)
: Declaration(0), Macro(Macro), Priority(Priority), StartParameter(0), : Declaration(0), Macro(Macro), Priority(Priority), StartParameter(0),
Kind(RK_Macro), CursorKind(CXCursor_MacroDefinition), Kind(RK_Macro), CursorKind(CXCursor_MacroDefinition),
Availability(CXAvailability_Available), Hidden(false), Availability(CXAvailability_Available), Hidden(false),

View File

@ -565,7 +565,7 @@ static void PrintPreprocessedTokens(Preprocessor &PP, Token &Tok,
} }
} }
typedef std::pair<IdentifierInfo*, MacroInfo*> id_macro_pair; typedef std::pair<const IdentifierInfo *, MacroInfo *> id_macro_pair;
static int MacroIDCompare(const void* a, const void* b) { static int MacroIDCompare(const void* a, const void* b) {
const id_macro_pair *LHS = static_cast<const id_macro_pair*>(a); const id_macro_pair *LHS = static_cast<const id_macro_pair*>(a);
const id_macro_pair *RHS = static_cast<const id_macro_pair*>(b); const id_macro_pair *RHS = static_cast<const id_macro_pair*>(b);

View File

@ -32,7 +32,7 @@
#include <ctime> #include <ctime>
using namespace clang; using namespace clang;
MacroInfo *Preprocessor::getMacroInfoHistory(IdentifierInfo *II) const { MacroInfo *Preprocessor::getMacroInfoHistory(const IdentifierInfo *II) const {
assert(II->hadMacroDefinition() && "Identifier has not been not a macro!"); assert(II->hadMacroDefinition() && "Identifier has not been not a macro!");
macro_iterator Pos = Macros.find(II); macro_iterator Pos = Macros.find(II);

View File

@ -6233,7 +6233,7 @@ MacroInfo *cxindex::getMacroInfo(const IdentifierInfo &II,
ASTUnit *Unit = static_cast<ASTUnit *>(TU->TUData); ASTUnit *Unit = static_cast<ASTUnit *>(TU->TUData);
Preprocessor &PP = Unit->getPreprocessor(); Preprocessor &PP = Unit->getPreprocessor();
MacroInfo *MI = PP.getMacroInfoHistory(const_cast<IdentifierInfo*>(&II)); MacroInfo *MI = PP.getMacroInfoHistory(&II);
while (MI) { while (MI) {
if (MacroDefLoc == MI->getDefinitionLoc()) if (MacroDefLoc == MI->getDefinitionLoc())
return MI; return MI;

View File

@ -1056,7 +1056,7 @@ CXCompletionString clang_getCursorCompletionString(CXCursor cursor) {
const MacroDefinition *definition = getCursorMacroDefinition(cursor); const MacroDefinition *definition = getCursorMacroDefinition(cursor);
const IdentifierInfo *MacroInfo = definition->getName(); const IdentifierInfo *MacroInfo = definition->getName();
ASTUnit *unit = getCursorASTUnit(cursor); ASTUnit *unit = getCursorASTUnit(cursor);
CodeCompletionResult Result(const_cast<IdentifierInfo *>(MacroInfo)); CodeCompletionResult Result(MacroInfo);
CodeCompletionString *String CodeCompletionString *String
= Result.CreateCodeCompletionString(unit->getASTContext(), = Result.CreateCodeCompletionString(unit->getASTContext(),
unit->getPreprocessor(), unit->getPreprocessor(),