20#include "qgsversion.h" 
   22#include <QCoreApplication> 
   75  string.remove( QLocale().groupSeparator() );
 
   76  return QLocale().toDouble( 
string, &ok );
 
 
   82  string.remove( QLocale().groupSeparator() );
 
   83  return QLocale().toInt( 
string, &ok );
 
 
   89  string.remove( QLocale().groupSeparator() );
 
   90  return QLocale().toLongLong( 
string, &ok );
 
 
  101  if ( ( size >> ( 8 * 
sizeof( size ) - 1 ) ) != 0 )
 
  103    QgsDebugError( QStringLiteral( 
"qgsMalloc - bad size requested: %1" ).arg( size ) );
 
  107  void *p = malloc( size );
 
  110    QgsDebugError( QStringLiteral( 
"Allocation of %1 bytes failed." ).arg( size ) );
 
 
  123  if ( !lhs.isValid() )
 
  124    return rhs.isValid();
 
  125  else if ( lhs.isNull() )
 
  126    return rhs.isValid() && !rhs.isNull();
 
  127  else if ( !rhs.isValid() || rhs.isNull() )
 
  130  switch ( lhs.type() )
 
  133      return lhs.toInt() < rhs.toInt();
 
  135      return lhs.toUInt() < rhs.toUInt();
 
  136    case QVariant::LongLong:
 
  137      return lhs.toLongLong() < rhs.toLongLong();
 
  138    case QVariant::ULongLong:
 
  139      return lhs.toULongLong() < rhs.toULongLong();
 
  140    case QVariant::Double:
 
  141      return lhs.toDouble() < rhs.toDouble();
 
  143      return lhs.toChar() < rhs.toChar();
 
  145      return lhs.toDate() < rhs.toDate();
 
  147      return lhs.toTime() < rhs.toTime();
 
  148    case QVariant::DateTime:
 
  149      return lhs.toDateTime() < rhs.toDateTime();
 
  151      return lhs.toBool() < rhs.toBool();
 
  155      const QList<QVariant> &lhsl = lhs.toList();
 
  156      const QList<QVariant> &rhsl = rhs.toList();
 
  158      int i, n = std::min( lhsl.size(), rhsl.size() );
 
  159      for ( i = 0; i < n && lhsl[i].type() == rhsl[i].type() && 
qgsVariantEqual( lhsl[i], rhsl[i] ); i++ )
 
  163        return lhsl.size() < rhsl.size();
 
  168    case QVariant::StringList:
 
  170      const QStringList &lhsl = lhs.toStringList();
 
  171      const QStringList &rhsl = rhs.toStringList();
 
  173      int i, n = std::min( lhsl.size(), rhsl.size() );
 
  174      for ( i = 0; i < n && lhsl[i] == rhsl[i]; i++ )
 
  178        return lhsl.size() < rhsl.size();
 
  180        return lhsl[i] < rhsl[i];
 
  184      return QString::localeAwareCompare( lhs.toString(), rhs.toString() ) < 0;
 
 
  198uint 
qHash( 
const QVariant &variant )
 
  200  if ( !variant.isValid() || variant.isNull() )
 
  201    return std::numeric_limits<uint>::max();
 
  203  switch ( variant.type() )
 
  206      return qHash( variant.toInt() );
 
  208      return qHash( variant.toUInt() );
 
  210      return qHash( variant.toBool() );
 
  211    case QVariant::Double:
 
  212      return qHash( variant.toDouble() );
 
  213    case QVariant::LongLong:
 
  214      return qHash( variant.toLongLong() );
 
  215    case QVariant::ULongLong:
 
  216      return qHash( variant.toULongLong() );
 
  217    case QVariant::String:
 
  218      return qHash( variant.toString() );
 
  220      return qHash( variant.toChar() );
 
  222      return qHash( variant.toList() );
 
  223    case QVariant::StringList:
 
  224      return qHash( variant.toStringList() );
 
  225    case QVariant::ByteArray:
 
  226      return qHash( variant.toByteArray() );
 
  228      return qHash( variant.toDate() );
 
  230      return qHash( variant.toTime() );
 
  231    case QVariant::DateTime:
 
  232      return qHash( variant.toDateTime() );
 
  234    case QVariant::Locale:
 
  235    case QVariant::RegularExpression:
 
  236#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 
  237    case QVariant::RegExp:
 
  239      return qHash( variant.toString() );
 
  244  return std::numeric_limits<uint>::max();
 
 
  249  return ( lhs.isNull() == rhs.isNull() && lhs == rhs ) || ( lhs.isNull() && rhs.isNull() && lhs.isValid() && rhs.isValid() );
 
 
  254  return QStringLiteral( 
"1:1000000,1:500000,1:250000,1:100000,1:50000,1:25000," 
  255                         "1:10000,1:5000,1:2500,1:1000,1:500" );
 
 
  260  return QString::fromUtf8( VERSION );
 
 
  272  return QString::fromUtf8( RELEASE_NAME );
 
 
  282  return GEOSversion();
 
 
  287  static const int version = QStringLiteral( 
"%1%2%3" )
 
  288                             .arg( GEOS_VERSION_MAJOR, 2, 10, QChar( 
'0' ) )
 
  289                             .arg( GEOS_VERSION_MINOR, 2, 10, QChar( 
'0' ) )
 
 
  297  return GEOS_VERSION_MAJOR;
 
 
  302  return GEOS_VERSION_MINOR;
 
 
  307  static const int version = atoi( 
xstr( GEOS_VERSION_PATCH ) );
 
 
  311#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 
  313bool qMapLessThanKey<QVariantList>( 
const QVariantList &key1, 
const QVariantList &key2 )
 
static const Qgis::MapToolUnit DEFAULT_SNAP_UNITS
Default snapping distance units.
 
MapToolUnit
Type of unit of tolerance value from settings.
 
@ Pixels
Pixels unit of tolerance.
 
static const double DEFAULT_HIGHLIGHT_MIN_WIDTH_MM
Default highlight line/stroke minimum width in mm.
 
static QString version()
Version string.
 
static const double DEFAULT_Z_COORDINATE
Default Z coordinate value.
 
static const char * QGIS_DEV_VERSION
The development version.
 
static QString geosVersion()
GEOS string version linked.
 
static const double DEFAULT_SNAP_TOLERANCE
Default snapping distance tolerance.
 
static const double DEFAULT_M_COORDINATE
Default M coordinate value.
 
static const double DEFAULT_HIGHLIGHT_BUFFER_MM
Default highlight buffer in mm.
 
static int geosVersionPatch()
GEOS Patch version number linked.
 
static const QColor DEFAULT_HIGHLIGHT_COLOR
Default highlight color.
 
static const double SCALE_PRECISION
Fudge factor used to compare two scales.
 
static QString devVersion()
The development version.
 
static QString releaseName()
Release name.
 
static QString defaultProjectScales()
A string with default project scales.
 
static const float DEFAULT_MAPTOPIXEL_THRESHOLD
Default threshold between map coordinates and device coordinates for map2pixel simplification.
 
static int geosVersionMajor()
GEOS Major version number linked.
 
static const double DEFAULT_SEARCH_RADIUS_MM
Identify search radius in mm.
 
static int versionInt()
Version number used for comparing versions using the "Check QGIS Version" function.
 
static int geosVersionMinor()
GEOS Minor version number linked.
 
static int geosVersionInt()
GEOS version number linked.
 
static const double UI_SCALE_FACTOR
UI scaling factor.
 
static QString vsiPrefixForPath(const QString &path)
Returns a the vsi prefix which corresponds to a file path, or an empty string if the path is not asso...
 
void * qgsMalloc(size_t size)
Allocates size bytes and returns a pointer to the allocated memory.
 
qlonglong qgsPermissiveToLongLong(QString string, bool &ok)
Converts a string to an qlonglong in a permissive way, e.g., allowing for incorrect numbers of digits...
 
bool qgsVariantEqual(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether they are equal, two NULL values are always treated a...
 
uint qHash(const QVariant &variant)
Hash for QVariant.
 
double qgsPermissiveToDouble(QString string, bool &ok)
Converts a string to a double in a permissive way, e.g., allowing for incorrect numbers of digits bet...
 
int qgsPermissiveToInt(QString string, bool &ok)
Converts a string to an integer in a permissive way, e.g., allowing for incorrect numbers of digits b...
 
void qgsFree(void *ptr)
Frees the memory space pointed to by ptr.
 
QString qgsVsiPrefix(const QString &path)
 
bool qgsVariantLessThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is less than the second.
 
bool qgsVariantGreaterThan(const QVariant &lhs, const QVariant &rhs)
Compares two QVariant values and returns whether the first is greater than the second.
 
#define QgsDebugError(str)