forked from qt-creator/qt-creator
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:
committed by
Marco Bubke
parent
537a4ba285
commit
7f9931b3f9
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
|
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user