7#ifndef __VERSION_CHECKER_H__
8# define __VERSION_CHECKER_H__
12# include <QtCore/QString>
13# include <QtCore/QStringList>
14# include <QtCore/QtGlobal>
51 operator QString()
const {
60 ; i < qMin(static_cast<unsigned long>(
sizeof(
tmp) /
sizeof(
int)),
static_cast<unsigned long>(parts.size()))
64 const int num = parts[i].toInt(&ok);
99 Q_ASSERT(
"Sanity check" && version_obj);
101 if (PyTuple_Check(version_obj) == 0)
104 int version_info[3] = {0, 0, 0};
105 for (
unsigned i = 0; i < PyTuple_Size(version_obj); ++i) {
106 PyObject*
v = PyTuple_GetItem(version_obj, i);
107 if (
v && PyLong_Check(
v))
108 version_info[i] = PyLong_AsLong(
v);
110 version_info[i] = -1;
112 if (version_info[0] != -1 && version_info[1] != -1 && version_info[2] != -1)
113 return ::PyKrita::version(version_info[0], version_info[1], version_info[2]);
126 Q_ASSERT(
"Sanity check" && version_obj);
132 if (version_str.isEmpty())
151 return !(left == right);
172 return left == right || left < right;
177 return left == right || left > right;
223 return left ==
m_rhs;
225 return left !=
m_rhs;
227 return left <=
m_rhs;
229 return left >=
m_rhs;
231 Q_ASSERT(!
"Sanity check");
263 Q_ASSERT(!
"Sanity check");
271 if (version_info.isEmpty())
274 bool lookup_next_char =
false;
275 int strip_lead_pos = 0;
276 switch (version_info.at(0).toLatin1()) {
279 lookup_next_char =
true;
283 lookup_next_char =
true;
294 if (lookup_next_char) {
295 if (version_info.at(1).toLatin1() ==
'=') {
304 QString rhs_str = version_info.mid(strip_lead_pos).trimmed();
static PyObject * unicode(const QString &string)
Convert a QString to a Python unicode object.
static bool isUnicode(PyObject *string)
Test if a Python object is compatible with a QString.
version_checker(const operation op=invalid)
Default constructor.
bool operator()(const version &left)
QString operationToString() const
static version_checker fromString(const QString &version_info)
void bind_second(const version &rhs)
static version tryObtainVersionFromTuple(PyObject *version_obj)
version(const int _major=zero, const int _minor=zero, const int patch=zero)
Default constructor.
static version fromString(const QString &version_str)
static version fromPythonObject(PyObject *version_obj)
static version tryObtainVersionFromString(PyObject *version_obj)
bool operator<(const version &left, const version &right)
bool operator==(const version &left, const version &right)
bool operator>=(const version &left, const version &right)
bool operator<=(const version &left, const version &right)
bool operator>(const version &left, const version &right)
bool operator!=(const version &left, const version &right)