libkwineffects: move version into its own files
parent
5ce02c6811
commit
e0c7878357
@ -0,0 +1,71 @@
|
||||
/*
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
SPDX-FileCopyrightText: 2023 Xaver Hugl <xaver.hugl@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#include "version.h"
|
||||
|
||||
#include <QByteArray>
|
||||
#include <QChar>
|
||||
#include <QList>
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
Version::Version(uint32_t major, uint32_t minor, uint32_t patch)
|
||||
: m_major(major)
|
||||
, m_minor(minor)
|
||||
, m_patch(patch)
|
||||
{
|
||||
}
|
||||
|
||||
bool Version::isValid() const
|
||||
{
|
||||
return m_major > 0 || m_minor > 0 || m_patch > 0;
|
||||
}
|
||||
|
||||
uint32_t Version::major() const
|
||||
{
|
||||
return m_major;
|
||||
}
|
||||
|
||||
uint32_t Version::minor() const
|
||||
{
|
||||
return m_minor;
|
||||
}
|
||||
|
||||
uint32_t Version::patch() const
|
||||
{
|
||||
return m_patch;
|
||||
}
|
||||
|
||||
Version Version::parseString(QByteArrayView versionString)
|
||||
{
|
||||
// Skip any leading non digit
|
||||
int start = 0;
|
||||
while (start < versionString.length() && !QChar::fromLatin1(versionString[start]).isDigit()) {
|
||||
start++;
|
||||
}
|
||||
|
||||
// Strip any non digit, non '.' characters from the end
|
||||
int end = start;
|
||||
while (end < versionString.length() && (versionString[end] == '.' || QChar::fromLatin1(versionString[end]).isDigit())) {
|
||||
end++;
|
||||
}
|
||||
|
||||
const QByteArray result = versionString.toByteArray().mid(start, end - start);
|
||||
const QList<QByteArray> tokens = result.split('.');
|
||||
if (tokens.empty()) {
|
||||
return Version(0, 0, 0);
|
||||
}
|
||||
const uint64_t major = tokens.at(0).toInt();
|
||||
const uint64_t minor = tokens.count() > 1 ? tokens.at(1).toInt() : 0;
|
||||
const uint64_t patch = tokens.count() > 2 ? tokens.at(2).toInt() : 0;
|
||||
|
||||
return Version(major, minor, patch);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
/*
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
SPDX-FileCopyrightText: 2023 Xaver Hugl <xaver.hugl@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#pragma once
|
||||
#include "libkwineffects/kwinglutils_export.h"
|
||||
|
||||
#include <QByteArrayView>
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
class KWINGLUTILS_EXPORT Version
|
||||
{
|
||||
public:
|
||||
Version(uint32_t major, uint32_t minor, uint32_t patch = 0);
|
||||
Version() = default;
|
||||
|
||||
auto operator<=>(const Version &other) const = default;
|
||||
bool isValid() const;
|
||||
uint32_t major() const;
|
||||
uint32_t minor() const;
|
||||
uint32_t patch() const;
|
||||
|
||||
static Version parseString(QByteArrayView versionString);
|
||||
|
||||
private:
|
||||
uint32_t m_major = 0;
|
||||
uint32_t m_minor = 0;
|
||||
uint32_t m_patch = 0;
|
||||
};
|
||||
|
||||
}
|
Loading…
Reference in New Issue