Krita Source Code Documentation
Loading...
Searching...
No Matches
PyKrita::version Class Reference

Class version. More...

#include <version_checker.h>

Public Member Functions

int _major () const
 
int _minor () const
 
bool isValid () const
 
 operator QString () const
 
int patch () const
 
 version (const int _major=zero, const int _minor=zero, const int patch=zero)
 Default constructor.
 

Static Public Member Functions

static version fromPythonObject (PyObject *version_obj)
 
static version fromString (const QString &version_str)
 
static version invalid ()
 

Private Types

enum  type { undefined = -1 , zero = 0 }
 

Static Private Member Functions

static version tryObtainVersionFromString (PyObject *version_obj)
 
static version tryObtainVersionFromTuple (PyObject *version_obj)
 

Private Attributes

int m_major
 
int m_minor
 
int m_patch
 

Detailed Description

Class version.

Definition at line 22 of file version_checker.h.

Member Enumeration Documentation

◆ type

enum PyKrita::version::type
private
Enumerator
undefined 
zero 

Definition at line 24 of file version_checker.h.

24 {
25 undefined = -1,
26 zero = 0
27 };

Constructor & Destructor Documentation

◆ version()

PyKrita::version::version ( const int _major = zero,
const int _minor = zero,
const int patch = zero )
inlineexplicit

Default constructor.

Definition at line 31 of file version_checker.h.

Member Function Documentation

◆ _major()

int PyKrita::version::_major ( ) const
inline

Definition at line 37 of file version_checker.h.

37 {
38 return m_major;
39 }

References m_major.

◆ _minor()

int PyKrita::version::_minor ( ) const
inline

Definition at line 40 of file version_checker.h.

40 {
41 return m_minor;
42 }

References m_minor.

◆ fromPythonObject()

static version PyKrita::version::fromPythonObject ( PyObject * version_obj)
inlinestatic

Definition at line 75 of file version_checker.h.

76 {
77 version v = tryObtainVersionFromTuple(version_obj);
78 if (!v.isValid()) {
79 // PEP396 requires __version__ to be a tuple of integers,
80 // but some modules use a string instead.
81 v = tryObtainVersionFromString(version_obj);
82 }
83 return v;
84 }
qreal v
static version tryObtainVersionFromTuple(PyObject *version_obj)
version(const int _major=zero, const int _minor=zero, const int patch=zero)
Default constructor.
static version tryObtainVersionFromString(PyObject *version_obj)

References tryObtainVersionFromString(), tryObtainVersionFromTuple(), and v.

◆ fromString()

static version PyKrita::version::fromString ( const QString & version_str)
inlinestatic

Definition at line 55 of file version_checker.h.

55 {
56 int tmp[3] = {zero, zero, zero};
57 QStringList parts = version_str.split('.');
58 for (
59 unsigned long i = 0
60 ; i < qMin(static_cast<unsigned long>(sizeof(tmp) / sizeof(int)), static_cast<unsigned long>(parts.size()))
61 ; ++i
62 ) {
63 bool ok;
64 const int num = parts[i].toInt(&ok);
65 if (ok)
66 tmp[i] = num;
67 else {
68 tmp[i] = undefined;
69 break;
70 }
71 }
72 return version(tmp[0], tmp[1], tmp[2]);
73 };

References undefined, version(), and zero.

◆ invalid()

static version PyKrita::version::invalid ( )
inlinestatic

Definition at line 86 of file version_checker.h.

86 {
87 static version s_bad(undefined, undefined, undefined);
88 return s_bad;
89 }

References undefined.

◆ isValid()

bool PyKrita::version::isValid ( ) const
inline

Definition at line 47 of file version_checker.h.

47 {
48 return _major() != undefined && _minor() != undefined && patch() != undefined;
49 }

References _major(), _minor(), patch(), and undefined.

◆ operator QString()

PyKrita::version::operator QString ( ) const
inline

Definition at line 51 of file version_checker.h.

51 {
52 return QString("%1.%2.%3").arg(_major()).arg(_minor()).arg(patch());
53 }

References _major(), _minor(), and patch().

◆ patch()

int PyKrita::version::patch ( ) const
inline

Definition at line 43 of file version_checker.h.

43 {
44 return m_patch;
45 }

References m_patch.

◆ tryObtainVersionFromString()

static version PyKrita::version::tryObtainVersionFromString ( PyObject * version_obj)
inlinestaticprivate

Try to parse version string as a simple triplet X.Y.Z.

Todo
Some modules has letters in a version string... For example current pytz version is "2013d".

Definition at line 124 of file version_checker.h.

125 {
126 Q_ASSERT("Sanity check" && version_obj);
127
128 if (!Python::isUnicode(version_obj))
129 return version::invalid();
130
131 QString version_str = Python::unicode(version_obj);
132 if (version_str.isEmpty())
133 return version::invalid();
134
135 return version::fromString(version_str);
136 }
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.
static version invalid()
static version fromString(const QString &version_str)

References fromString(), invalid(), PyKrita::Python::isUnicode(), and PyKrita::Python::unicode().

◆ tryObtainVersionFromTuple()

static version PyKrita::version::tryObtainVersionFromTuple ( PyObject * version_obj)
inlinestaticprivate

Definition at line 97 of file version_checker.h.

98 {
99 Q_ASSERT("Sanity check" && version_obj);
100
101 if (PyTuple_Check(version_obj) == 0)
102 return version::invalid();
103
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);
109 else
110 version_info[i] = -1;
111 }
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]);
114
115 return version::invalid();
116 }

References invalid(), and v.

Member Data Documentation

◆ m_major

int PyKrita::version::m_major
private

Definition at line 92 of file version_checker.h.

◆ m_minor

int PyKrita::version::m_minor
private

Definition at line 93 of file version_checker.h.

◆ m_patch

int PyKrita::version::m_patch
private

Definition at line 94 of file version_checker.h.


The documentation for this class was generated from the following file: