From c705670947ebee2906b8bb45db1a9d7401159534 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sat, 16 Jun 2018 12:56:00 +1000 Subject: [PATCH] Upgrade INT_ methods to numeric_limits --- scripts/sipify.pl | 2 ++ src/core/dxf/qgsdxfexport.cpp | 4 ++-- src/core/dxf/qgsdxfpaintdevice.cpp | 2 +- src/core/pal/problem.cpp | 4 ++-- src/core/processing/qgsprocessingparameters.cpp | 2 +- src/core/qgsfield.cpp | 2 +- src/core/qgsstringstatisticalsummary.cpp | 2 +- src/core/qgsvectorfilewriter.cpp | 2 +- src/gui/qgsgradientstopeditor.cpp | 4 ++-- src/gui/raster/qgspalettedrendererwidget.cpp | 2 +- src/plugins/grass/qgsgrassmoduleparam.cpp | 4 ++-- src/providers/grass/qgsgrassrasterprovider.cpp | 2 +- src/providers/postgres/qgscolumntypethread.cpp | 2 +- src/providers/postgres/qgspgtablemodel.cpp | 6 +++--- src/providers/postgres/qgspostgresconn.cpp | 12 ++++++------ src/providers/postgres/qgspostgresdataitems.cpp | 2 +- src/server/services/wms/qgsmediancut.cpp | 16 ++++++++-------- tests/code_layout/test_banned_keywords.sh | 5 +++++ 18 files changed, 41 insertions(+), 34 deletions(-) diff --git a/scripts/sipify.pl b/scripts/sipify.pl index 2b6f22286a8..5350e2bf67a 100755 --- a/scripts/sipify.pl +++ b/scripts/sipify.pl @@ -437,6 +437,8 @@ sub fix_constants { $line =~ s/\bstd::numeric_limits::max\(\)/DBL_MAX/g; $line =~ s/\bstd::numeric_limits::lowest\(\)/-DBL_MAX/g; $line =~ s/\bstd::numeric_limits::epsilon\(\)/DBL_EPSILON/g; + $line =~ s/\bstd::numeric_limits::max\(\)/INT_MAX/g; + $line =~ s/\bstd::numeric_limits::min\(\)/INT_MIN/g; return $line; } diff --git a/src/core/dxf/qgsdxfexport.cpp b/src/core/dxf/qgsdxfexport.cpp index 1fcd54c94ca..174ce544148 100644 --- a/src/core/dxf/qgsdxfexport.cpp +++ b/src/core/dxf/qgsdxfexport.cpp @@ -444,7 +444,7 @@ void QgsDxfExport::writeGroup( int code, const QgsPoint &p ) void QgsDxfExport::writeGroup( const QColor &color, int exactMatchCode, int rgbCode, int transparencyCode ) { int minDistAt = -1; - int minDist = INT_MAX; + int minDist = std::numeric_limits::max(); for ( int i = 1; i < static_cast< int >( sizeof( sDxfColors ) / sizeof( *sDxfColors ) ) && minDist > 0; ++i ) { @@ -3910,7 +3910,7 @@ QString QgsDxfExport::lineStyleFromSymbolLayer( const QgsSymbolLayer *symbolLaye int QgsDxfExport::closestColorMatch( QRgb pixel ) { int idx = 0; - int current_distance = INT_MAX; + int current_distance = std::numeric_limits::max(); for ( int i = 1; i < static_cast< int >( sizeof( sDxfColors ) / sizeof( *sDxfColors ) ); ++i ) { int dist = color_distance( pixel, i ); diff --git a/src/core/dxf/qgsdxfpaintdevice.cpp b/src/core/dxf/qgsdxfpaintdevice.cpp index 9c3d657c38a..3ce187d9e57 100644 --- a/src/core/dxf/qgsdxfpaintdevice.cpp +++ b/src/core/dxf/qgsdxfpaintdevice.cpp @@ -46,7 +46,7 @@ int QgsDxfPaintDevice::metric( PaintDeviceMetric metric ) const case QPaintDevice::PdmHeightMM: return mDrawingSize.height(); case QPaintDevice::PdmNumColors: - return INT_MAX; + return std::numeric_limits::max(); case QPaintDevice::PdmDepth: return 32; case QPaintDevice::PdmDpiX: diff --git a/src/core/pal/problem.cpp b/src/core/pal/problem.cpp index 2cc99dcd061..5a30d9add12 100644 --- a/src/core/pal/problem.cpp +++ b/src/core/pal/problem.cpp @@ -39,7 +39,7 @@ #include "priorityqueue.h" #include "internalexception.h" #include -#include //for INT_MAX +#include //for std::numeric_limits::max() #include "qgslabelingengine.h" @@ -347,7 +347,7 @@ void Problem::init_sol_falp() { if ( sol->s[i] == -1 ) { - nbOverlap = INT_MAX; + nbOverlap = std::numeric_limits::max(); start_p = featStartId[i]; for ( p = 0; p < featNbLp[i]; p++ ) { diff --git a/src/core/processing/qgsprocessingparameters.cpp b/src/core/processing/qgsprocessingparameters.cpp index 204caf5638b..098d753c02f 100644 --- a/src/core/processing/qgsprocessingparameters.cpp +++ b/src/core/processing/qgsprocessingparameters.cpp @@ -135,7 +135,7 @@ int QgsProcessingParameters::parameterAsInt( const QgsProcessingParameterDefinit if ( ok ) { double round = std::round( dbl ); - if ( round > INT_MAX || round < -INT_MAX ) + if ( round > std::numeric_limits::max() || round < -std::numeric_limits::max() ) { //double too large to fit in int return 0; diff --git a/src/core/qgsfield.cpp b/src/core/qgsfield.cpp index 29809842c3f..3f98cc18df0 100644 --- a/src/core/qgsfield.cpp +++ b/src/core/qgsfield.cpp @@ -353,7 +353,7 @@ bool QgsField::convertCompatible( QVariant &v ) const } double round = std::round( dbl ); - if ( round > INT_MAX || round < -INT_MAX ) + if ( round > std::numeric_limits::max() || round < -std::numeric_limits::max() ) { //double too large to fit in int v = QVariant( d->type ); diff --git a/src/core/qgsstringstatisticalsummary.cpp b/src/core/qgsstringstatisticalsummary.cpp index a44de78d10f..42157709aa4 100644 --- a/src/core/qgsstringstatisticalsummary.cpp +++ b/src/core/qgsstringstatisticalsummary.cpp @@ -40,7 +40,7 @@ void QgsStringStatisticalSummary::reset() mCountMissing = 0; mMin.clear(); mMax.clear(); - mMinLength = INT_MAX; + mMinLength = std::numeric_limits::max(); mMaxLength = 0; mSumLengths = 0; mMeanLength = 0; diff --git a/src/core/qgsvectorfilewriter.cpp b/src/core/qgsvectorfilewriter.cpp index 511c39f9b94..39d56e4a3f0 100644 --- a/src/core/qgsvectorfilewriter.cpp +++ b/src/core/qgsvectorfilewriter.cpp @@ -2496,7 +2496,7 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::prepareWriteAsVectorFormat { QVariant min = layer->minimumValue( i ); QVariant max = layer->maximumValue( i ); - if ( std::max( std::llabs( min.toLongLong() ), std::llabs( max.toLongLong() ) ) < INT_MAX ) + if ( std::max( std::llabs( min.toLongLong() ), std::llabs( max.toLongLong() ) ) < std::numeric_limits::max() ) { details.outputFields[i].setType( QVariant::Int ); } diff --git a/src/gui/qgsgradientstopeditor.cpp b/src/gui/qgsgradientstopeditor.cpp index a35dfb4ef51..1a883f76341 100644 --- a/src/gui/qgsgradientstopeditor.cpp +++ b/src/gui/qgsgradientstopeditor.cpp @@ -275,8 +275,8 @@ void QgsGradientStopEditor::mouseMoveEvent( QMouseEvent *e ) int QgsGradientStopEditor::findClosestStop( int x, int threshold ) const { int closestStop = -1; - int closestDiff = INT_MAX; - int currentDiff = INT_MAX; + int closestDiff = std::numeric_limits::max(); + int currentDiff = std::numeric_limits::max(); // check for matching stops first, so that they take precedence // otherwise it's impossible to select a stop which sits above the first/last stop, making diff --git a/src/gui/raster/qgspalettedrendererwidget.cpp b/src/gui/raster/qgspalettedrendererwidget.cpp index d2e05d3ad08..bf8fded4292 100644 --- a/src/gui/raster/qgspalettedrendererwidget.cpp +++ b/src/gui/raster/qgspalettedrendererwidget.cpp @@ -704,7 +704,7 @@ bool QgsPalettedRendererModel::removeRows( int row, int count, const QModelIndex bool QgsPalettedRendererModel::insertRows( int row, int count, const QModelIndex & ) { QgsPalettedRasterRenderer::ClassData::const_iterator cIt = mData.constBegin(); - int currentMaxValue = -INT_MAX; + int currentMaxValue = -std::numeric_limits::max(); for ( ; cIt != mData.constEnd(); ++cIt ) { int value = cIt->value; diff --git a/src/plugins/grass/qgsgrassmoduleparam.cpp b/src/plugins/grass/qgsgrassmoduleparam.cpp index 6145c503552..1758d8ebb69 100644 --- a/src/plugins/grass/qgsgrassmoduleparam.cpp +++ b/src/plugins/grass/qgsgrassmoduleparam.cpp @@ -267,8 +267,8 @@ QgsGrassModuleOption::QgsGrassModuleOption( QgsGrassModule *module, QString key, , mValueType( String ) , mOutputType( None ) , mHaveLimits( false ) - , mMin( INT_MAX ) - , mMax( INT_MIN ) + , mMin( std::numeric_limits::max() ) + , mMax( std::numeric_limits::min() ) , mIsOutput( false ) , mUsesRegion( false ) { diff --git a/src/providers/grass/qgsgrassrasterprovider.cpp b/src/providers/grass/qgsgrassrasterprovider.cpp index 020a02d813d..0d7fb474903 100644 --- a/src/providers/grass/qgsgrassrasterprovider.cpp +++ b/src/providers/grass/qgsgrassrasterprovider.cpp @@ -114,7 +114,7 @@ QgsGrassRasterProvider::QgsGrassRasterProvider( QString const &uri ) double myInternalNoDataValue; if ( mGrassDataType == CELL_TYPE ) { - myInternalNoDataValue = INT_MIN; + myInternalNoDataValue = std::numeric_limits::min(); } else if ( mGrassDataType == DCELL_TYPE ) { diff --git a/src/providers/postgres/qgscolumntypethread.cpp b/src/providers/postgres/qgscolumntypethread.cpp index d0566ec1dcd..5884b9826d3 100644 --- a/src/providers/postgres/qgscolumntypethread.cpp +++ b/src/providers/postgres/qgscolumntypethread.cpp @@ -83,7 +83,7 @@ void QgsGeomColumnTypeThread::run() if ( !layerProperty.geometryColName.isNull() && ( layerProperty.types.value( 0, QgsWkbTypes::Unknown ) == QgsWkbTypes::Unknown || - layerProperty.srids.value( 0, INT_MIN ) == INT_MIN ) ) + layerProperty.srids.value( 0, std::numeric_limits::min() ) == std::numeric_limits::min() ) ) { if ( dontResolveType ) { diff --git a/src/providers/postgres/qgspgtablemodel.cpp b/src/providers/postgres/qgspgtablemodel.cpp index 23203e98dc5..b87d53fe11b 100644 --- a/src/providers/postgres/qgspgtablemodel.cpp +++ b/src/providers/postgres/qgspgtablemodel.cpp @@ -60,7 +60,7 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper { tip = tr( "Specify a geometry type in the '%1' column" ).arg( tr( "Data Type" ) ); } - else if ( wkbType != QgsWkbTypes::NoGeometry && srid == INT_MIN ) + else if ( wkbType != QgsWkbTypes::NoGeometry && srid == std::numeric_limits::min() ) { tip = tr( "Enter a SRID into the '%1' column" ).arg( tr( "SRID" ) ); } @@ -82,7 +82,7 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper QStandardItem *commentItem = new QStandardItem( layerProperty.tableComment ); QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName ); QStandardItem *sridItem = new QStandardItem( wkbType != QgsWkbTypes::NoGeometry ? QString::number( srid ) : QLatin1String( "" ) ); - sridItem->setEditable( wkbType != QgsWkbTypes::NoGeometry && srid == INT_MIN ); + sridItem->setEditable( wkbType != QgsWkbTypes::NoGeometry && srid == std::numeric_limits::min() ); if ( sridItem->isEditable() ) { sridItem->setText( tr( "Enter…" ) ); @@ -264,7 +264,7 @@ bool QgsPgTableModel::setData( const QModelIndex &idx, const QVariant &value, in bool ok; int srid = idx.sibling( idx.row(), DbtmSrid ).data().toInt( &ok ); - if ( !ok || srid == INT_MIN ) + if ( !ok || srid == std::numeric_limits::min() ) tip = tr( "Enter a SRID into the '%1' column" ).arg( tr( "SRID" ) ); } diff --git a/src/providers/postgres/qgspostgresconn.cpp b/src/providers/postgres/qgspostgresconn.cpp index 8a9d56b9787..8e6452c16df 100644 --- a/src/providers/postgres/qgspostgresconn.cpp +++ b/src/providers/postgres/qgspostgresconn.cpp @@ -540,11 +540,11 @@ bool QgsPostgresConn::getTableInfo( bool searchGeometryColumnsOnly, bool searchP bool isMaterializedView = relkind == QLatin1String( "m" ); QString comment = result.PQgetvalue( idx, 7 ); - int srid = ssrid.isEmpty() ? INT_MIN : ssrid.toInt(); + int srid = ssrid.isEmpty() ? std::numeric_limits::min() : ssrid.toInt(); if ( majorVersion() >= 2 && srid == 0 ) { // 0 doesn't constraint => detect - srid = INT_MIN; + srid = std::numeric_limits::min(); } #if 0 @@ -665,7 +665,7 @@ bool QgsPostgresConn::getTableInfo( bool searchGeometryColumnsOnly, bool searchP //QgsDebugMsg( QString( "%1.%2.%3: %4" ).arg( schemaName ).arg( tableName ).arg( column ).arg( relkind ) ); layerProperty.types = QList() << QgsWkbTypes::Unknown; - layerProperty.srids = QList() << INT_MIN; + layerProperty.srids = QList() << std::numeric_limits::min(); layerProperty.schemaName = schemaName; layerProperty.tableName = tableName; layerProperty.geometryColName = column; @@ -754,7 +754,7 @@ bool QgsPostgresConn::getTableInfo( bool searchGeometryColumnsOnly, bool searchP //QgsDebugMsg( QString( "%1.%2: %3" ).arg( schema ).arg( table ).arg( relkind ) ); layerProperty.types = QList() << QgsWkbTypes::NoGeometry; - layerProperty.srids = QList() << INT_MIN; + layerProperty.srids = QList() << std::numeric_limits::min(); layerProperty.schemaName = schema; layerProperty.tableName = table; layerProperty.geometryColName = QString(); @@ -1486,8 +1486,8 @@ void QgsPostgresConn::retrieveLayerTypes( QgsPostgresLayerProperty &layerPropert query += ','; - int srid = layerProperty.srids.value( 0, INT_MIN ); - if ( srid == INT_MIN ) + int srid = layerProperty.srids.value( 0, std::numeric_limits::min() ); + if ( srid == std::numeric_limits::min() ) { query += QStringLiteral( "%1(%2%3)" ) .arg( majorVersion() < 2 ? "srid" : "st_srid", diff --git a/src/providers/postgres/qgspostgresdataitems.cpp b/src/providers/postgres/qgspostgresdataitems.cpp index 88467cf3205..4dc01e51d7b 100644 --- a/src/providers/postgres/qgspostgresdataitems.cpp +++ b/src/providers/postgres/qgspostgresdataitems.cpp @@ -555,7 +555,7 @@ QVector QgsPGSchemaItem::createChildren() if ( !layerProperty.geometryColName.isNull() && ( layerProperty.types.value( 0, QgsWkbTypes::Unknown ) == QgsWkbTypes::Unknown || - layerProperty.srids.value( 0, INT_MIN ) == INT_MIN ) ) + layerProperty.srids.value( 0, std::numeric_limits::min() ) == std::numeric_limits::min() ) ) { if ( dontResolveType ) { diff --git a/src/server/services/wms/qgsmediancut.cpp b/src/server/services/wms/qgsmediancut.cpp index 98fb578da9e..4b08a8bda94 100644 --- a/src/server/services/wms/qgsmediancut.cpp +++ b/src/server/services/wms/qgsmediancut.cpp @@ -67,14 +67,14 @@ namespace QgsWms return false; } - int rMin = INT_MAX; - int gMin = INT_MAX; - int bMin = INT_MAX; - int aMin = INT_MAX; - int rMax = INT_MIN; - int gMax = INT_MIN; - int bMax = INT_MIN; - int aMax = INT_MIN; + int rMin = std::numeric_limits::max(); + int gMin = std::numeric_limits::max(); + int bMin = std::numeric_limits::max(); + int aMin = std::numeric_limits::max(); + int rMax = std::numeric_limits::min(); + int gMax = std::numeric_limits::min(); + int bMax = std::numeric_limits::min(); + int aMax = std::numeric_limits::min(); int currentRed = 0; int currentGreen = 0; diff --git a/tests/code_layout/test_banned_keywords.sh b/tests/code_layout/test_banned_keywords.sh index 317c9cf188e..2bb7ffdb1a8 100755 --- a/tests/code_layout/test_banned_keywords.sh +++ b/tests/code_layout/test_banned_keywords.sh @@ -17,6 +17,11 @@ HINTS[2]="Use the type-safe method std::numeric_limits::min() instead (b KEYWORDS[3]="DBL_EPSILON" HINTS[3]="Use the type-safe method std::numeric_limits::epsilon() instead" +KEYWORDS[4]="INT_MIN" +HINTS[4]="Use the type-safe method std::numeric_limits::min() instead" + +KEYWORDS[5]="INT_MAX" +HINTS[5]="Use the type-safe method std::numeric_limits::max() instead" RES= DIR=$(git rev-parse --show-toplevel)