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) Q_DECLARE_FLAGS(LanguageExtensions, LanguageExtension)
constexpr enum LanguageExtension operator|(const LanguageExtension first, constexpr LanguageExtension operator|(LanguageExtension first, LanguageExtension second)
const LanguageExtension second)
{ {
return static_cast<LanguageExtension>( return static_cast<LanguageExtension>(
(static_cast<unsigned char>(first) | static_cast<unsigned char>(second))); (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); return static_cast<unsigned char>(first) & static_cast<unsigned char>(second);
} }

View File

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

View File

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

View File

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