Fix MSVC2015 build

- error C3431: 'LanguageExtension': a scoped enumeration cannot be
redeclared as an unscoped enumeration

 - add constructors to SlotUsage

 - do not use pointers for back_insert_iterator.

Change-Id: Id6df08436de639b70fdf6ccc4914f8dee2cb8628
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Ivan Donchevskii
2019-01-22 09:34:14 +01:00
committed by Marco Bubke
parent 537a4ba285
commit 7f9931b3f9
4 changed files with 17 additions and 13 deletions

View File

@@ -60,14 +60,13 @@ enum class LanguageExtension : unsigned char {
Q_DECLARE_FLAGS(LanguageExtensions, LanguageExtension)
constexpr enum LanguageExtension operator|(const LanguageExtension first,
const LanguageExtension second)
constexpr LanguageExtension operator|(LanguageExtension first, LanguageExtension second)
{
return static_cast<LanguageExtension>(
(static_cast<unsigned char>(first) | static_cast<unsigned char>(second)));
}
constexpr bool operator&&(const LanguageExtension first, const LanguageExtension second)
constexpr bool operator&&(LanguageExtension first, LanguageExtension second)
{
return static_cast<unsigned char>(first) & static_cast<unsigned char>(second);
}

View File

@@ -93,7 +93,7 @@ public:
QString callGroupId;
// Versions, features and extensions
::Utils::Language language = Utils::Language::Cxx;
::Utils::Language language = ::Utils::Language::Cxx;
::Utils::LanguageVersion languageVersion = ::Utils::LanguageVersion::LatestCxx;
::Utils::LanguageExtensions languageExtensions = ::Utils::LanguageExtension::None;
CPlusPlus::LanguageFeatures languageFeatures;

View File

@@ -55,18 +55,18 @@ public:
void pathsChanged(const FilePathIds &filePathIds)
{
using SourceTimeStampPointers = std::vector<SourceTimeStamp*>;
using SourceTimeStampReferences = std::vector<std::reference_wrapper<SourceTimeStamp>>;
class BackInserterIterator : public std::back_insert_iterator<SourceTimeStampPointers>
class BackInserterIterator : public std::back_insert_iterator<SourceTimeStampReferences>
{
public:
BackInserterIterator(SourceTimeStampPointers &container)
: std::back_insert_iterator<SourceTimeStampPointers>(container)
BackInserterIterator(SourceTimeStampReferences &container)
: std::back_insert_iterator<SourceTimeStampReferences>(container)
{}
BackInserterIterator &operator=(SourceTimeStamp &timeStamp)
{
container->push_back(&timeStamp);
container->push_back(std::ref(timeStamp));
return *this;
}
@@ -74,7 +74,7 @@ public:
BackInserterIterator &operator*() { return *this; }
};
SourceTimeStampPointers timeStampsToUpdate;
SourceTimeStampReferences timeStampsToUpdate;
timeStampsToUpdate.reserve(filePathIds.size());
std::set_intersection(m_currentSourceTimeStamps.begin(),
@@ -83,9 +83,9 @@ public:
filePathIds.end(),
BackInserterIterator(timeStampsToUpdate));
for (SourceTimeStamp *sourceTimeStamp : timeStampsToUpdate) {
sourceTimeStamp->lastModified = m_getModifiedTime(
m_filePathCache.filePath(sourceTimeStamp->sourceId));
for (SourceTimeStamp &sourceTimeStamp : timeStampsToUpdate) {
sourceTimeStamp.lastModified = m_getModifiedTime(
m_filePathCache.filePath(sourceTimeStamp.sourceId));
}
}

View File

@@ -33,6 +33,11 @@ using uint = unsigned int;
struct SlotUsage
{
SlotUsage() = default;
SlotUsage(uint free, uint used)
: free(free)
, used(used)
{}
uint free = 0;
uint used = 0;
};