cmListFileContext: Implement LessThanComparable.

Move wrapping existing code from cmMakefile, and simplify the
implementation there.
This commit is contained in:
Stephen Kelly 2015-05-18 21:44:14 +02:00
parent 7eb0dfa062
commit e96b5d14f9
4 changed files with 11 additions and 23 deletions

View File

@ -431,3 +431,11 @@ std::ostream& operator<<(std::ostream& os, cmListFileContext const& lfc)
}
return os;
}
bool operator<(const cmListFileContext& lhs, const cmListFileContext& rhs)
{
if(lhs.FilePath != rhs.FilePath)
return lhs.FilePath < rhs.FilePath;
return lhs.Line < rhs.Line;
}

View File

@ -62,6 +62,7 @@ struct cmListFileContext
};
std::ostream& operator<<(std::ostream&, cmListFileContext const&);
bool operator<(const cmListFileContext& lhs, const cmListFileContext& rhs);
struct cmListFileFunction: public cmListFileContext
{

View File

@ -4943,9 +4943,7 @@ bool cmMakefile::SetPolicyVersion(const char *version)
//----------------------------------------------------------------------------
bool cmMakefile::HasCMP0054AlreadyBeenReported() const
{
cmCMP0054Id id(this->GetExecutionContext());
return !this->CMP0054ReportedIds.insert(id).second;
return !this->CMP0054ReportedIds.insert(this->GetExecutionContext()).second;
}
//----------------------------------------------------------------------------

View File

@ -386,26 +386,7 @@ public:
*/
cmPolicies *GetPolicies() const;
struct cmCMP0054Id
{
cmCMP0054Id(cmListFileContext const& context):
Context(context)
{
}
bool operator< (cmCMP0054Id const& id) const
{
if(this->Context.FilePath != id.Context.FilePath)
return this->Context.FilePath < id.Context.FilePath;
return this->Context.Line < id.Context.Line;
}
cmListFileContext Context;
};
mutable std::set<cmCMP0054Id> CMP0054ReportedIds;
mutable std::set<cmListFileContext> CMP0054ReportedIds;
/**
* Determine if the given context, name pair has already been reported