source: calamares/trunk/fuentes/src/libcalamares/kdsingleapplicationguard/kdtoolsglobal.cpp @ 7538

Last change on this file since 7538 was 7538, checked in by kbut, 13 months ago

sync with github

File size: 1.4 KB
Line 
1#include "kdtoolsglobal.h"
2
3#include <QByteArray>
4
5#include <algorithm>
6
7namespace {
8    struct Version {
9        unsigned char v[3];
10    };
11
12    static inline bool operator<( const Version & lhs, const Version & rhs ) {
13        return std::lexicographical_compare( lhs.v, lhs.v + 3, rhs.v, rhs.v + 3 );
14    }
15    static inline bool operator==( const Version & lhs, const Version & rhs ) {
16        return std::equal( lhs.v, lhs.v + 3, rhs.v );
17    }
18    KDTOOLS_MAKE_RELATION_OPERATORS( Version, static inline )
19}
20
21static Version kdParseQtVersion( const char * const version ) {
22    if ( !version || qstrlen( version ) < 5 || version[1] != '.' || version[3] != '.' || ( version[5] != 0 && version[5] != '.' && version[5] != '-' ) )
23        return Version(); // parse error
24    const Version result = { { static_cast< unsigned char >( version[0] - '0' ),
25                               static_cast< unsigned char >( version[2] - '0' ),
26                               static_cast< unsigned char >( version[4] - '0' ) } };
27    return result;
28}
29
30bool _kdCheckQtVersion_impl( int major, int minor, int patchlevel ) {
31    static const Version actual = kdParseQtVersion( qVersion() ); // do this only once each run...
32    const Version requested = { { static_cast< unsigned char >( major ),
33                                  static_cast< unsigned char >( minor ),
34                                  static_cast< unsigned char >( patchlevel ) } };
35    return actual >= requested;
36}
Note: See TracBrowser for help on using the repository browser.