From ade7f529b85c21d0bb208a12b7ab4425da27449d Mon Sep 17 00:00:00 2001 From: Ian McInerney Date: Sat, 15 Aug 2020 01:37:23 +0100 Subject: [PATCH] Switch shared_ptr creation to using make_shared --- eeschema/erc_item.cpp | 85 +++++++++++------------------------------ pcbnew/drc/drc_item.cpp | 68 ++++++++++++++++----------------- 2 files changed, 55 insertions(+), 98 deletions(-) diff --git a/eeschema/erc_item.cpp b/eeschema/erc_item.cpp index f8ff959c26..d483dcc650 100644 --- a/eeschema/erc_item.cpp +++ b/eeschema/erc_item.cpp @@ -143,74 +143,33 @@ std::vector> ERC_ITEM::allItemTypes( { std::shared_ptr ERC_ITEM::Create( int aErrorCode ) { - ERC_ITEM *item; switch( aErrorCode ) { - case ERCE_DUPLICATE_SHEET_NAME: - item = new ERC_ITEM( duplicateSheetName ); break; - - case ERCE_PIN_NOT_CONNECTED: - item = new ERC_ITEM( pinNotConnected ); break; - - case ERCE_PIN_NOT_DRIVEN: - item = new ERC_ITEM( pinNotDriven ); break; - - case ERCE_PIN_TO_PIN_WARNING: - item = new ERC_ITEM( pinTableWarning ); break; - - case ERCE_PIN_TO_PIN_ERROR: - item = new ERC_ITEM( pinTableError ); break; - - case ERCE_HIERACHICAL_LABEL: - item = new ERC_ITEM( hierLabelMismatch ); break; - - case ERCE_NOCONNECT_CONNECTED: - item = new ERC_ITEM( noConnectConnected ); break; - - case ERCE_NOCONNECT_NOT_CONNECTED: - item = new ERC_ITEM( noConnectDangling ); break; - - case ERCE_LABEL_NOT_CONNECTED: - item = new ERC_ITEM( labelDangling ); break; - - case ERCE_SIMILAR_LABELS: - item = new ERC_ITEM( similarLabels ); break; - - case ERCE_DIFFERENT_UNIT_FP: - item = new ERC_ITEM( differentUnitFootprint ); break; - - case ERCE_DIFFERENT_UNIT_NET: - item = new ERC_ITEM( differentUnitNet ); break; - - case ERCE_BUS_ALIAS_CONFLICT: - item = new ERC_ITEM( busDefinitionConflict ); break; - - case ERCE_DRIVER_CONFLICT: - item = new ERC_ITEM( multipleNetNames ); break; - - case ERCE_BUS_ENTRY_CONFLICT: - item = new ERC_ITEM( netNotBusMember ); break; - - case ERCE_BUS_LABEL_ERROR: - item = new ERC_ITEM( busLabelSyntax ); break; - - case ERCE_BUS_TO_BUS_CONFLICT: - item = new ERC_ITEM( busToBusConflict ); break; - - case ERCE_BUS_TO_NET_CONFLICT: - item = new ERC_ITEM( busToNetConflict ); break; - - case ERCE_GLOBLABEL: - item = new ERC_ITEM( globalLabelDangling ); break; - - case ERCE_UNRESOLVED_VARIABLE: - item = new ERC_ITEM( unresolvedVariable ); break; - + case ERCE_DUPLICATE_SHEET_NAME: return std::make_shared( duplicateSheetName ); + case ERCE_PIN_NOT_CONNECTED: return std::make_shared( pinNotConnected ); + case ERCE_PIN_NOT_DRIVEN: return std::make_shared( pinNotDriven ); + case ERCE_PIN_TO_PIN_WARNING: return std::make_shared( pinTableWarning ); + case ERCE_PIN_TO_PIN_ERROR: return std::make_shared( pinTableError ); + case ERCE_HIERACHICAL_LABEL: return std::make_shared( hierLabelMismatch ); + case ERCE_NOCONNECT_CONNECTED: return std::make_shared( noConnectConnected ); + case ERCE_NOCONNECT_NOT_CONNECTED: return std::make_shared( noConnectDangling ); + case ERCE_LABEL_NOT_CONNECTED: return std::make_shared( labelDangling ); + case ERCE_SIMILAR_LABELS: return std::make_shared( similarLabels ); + case ERCE_DIFFERENT_UNIT_FP: return std::make_shared( differentUnitFootprint ); + case ERCE_DIFFERENT_UNIT_NET: return std::make_shared( differentUnitNet ); + case ERCE_BUS_ALIAS_CONFLICT: return std::make_shared( busDefinitionConflict ); + case ERCE_DRIVER_CONFLICT: return std::make_shared( multipleNetNames ); + case ERCE_BUS_ENTRY_CONFLICT: return std::make_shared( netNotBusMember ); + case ERCE_BUS_LABEL_ERROR: return std::make_shared( busLabelSyntax ); + case ERCE_BUS_TO_BUS_CONFLICT: return std::make_shared( busToBusConflict ); + case ERCE_BUS_TO_NET_CONFLICT: return std::make_shared( busToNetConflict ); + case ERCE_GLOBLABEL: return std::make_shared( globalLabelDangling ); + case ERCE_UNRESOLVED_VARIABLE: return std::make_shared( unresolvedVariable ); case ERCE_UNSPECIFIED: default: wxFAIL_MSG( "Unknown ERC error code" ); return nullptr; } - - return std::shared_ptr( item ); + + return nullptr; } diff --git a/pcbnew/drc/drc_item.cpp b/pcbnew/drc/drc_item.cpp index 2a6f05505c..3bb538c336 100644 --- a/pcbnew/drc/drc_item.cpp +++ b/pcbnew/drc/drc_item.cpp @@ -201,48 +201,46 @@ std::vector> DRC_ITEM::allItemTypes( { std::shared_ptr DRC_ITEM::Create( int aErrorCode ) { - DRC_ITEM *item = nullptr; - switch( aErrorCode ) { - case DRCE_UNCONNECTED_ITEMS: item = new DRC_ITEM( unconnectedItems ); break; - case DRCE_SHORTING_ITEMS: item = new DRC_ITEM( shortingItems ); break; - case DRCE_ALLOWED_ITEMS: item = new DRC_ITEM( itemsNotAllowed ); break; - case DRCE_CLEARANCE: item = new DRC_ITEM( clearance ); break; - case DRCE_TRACKS_CROSSING: item = new DRC_ITEM( tracksCrossing ); break; - case DRCE_COPPER_EDGE_CLEARANCE: item = new DRC_ITEM( copperEdgeClearance ); break; - case DRCE_ZONES_INTERSECT: item = new DRC_ITEM( zonesIntersect ); break; - case DRCE_ZONE_HAS_EMPTY_NET: item = new DRC_ITEM( zoneHasEmptyNet ); break; - case DRCE_DANGLING_VIA: item = new DRC_ITEM( viaDangling ); break; - case DRCE_DANGLING_TRACK: item = new DRC_ITEM( trackDangling ); break; - case DRCE_DRILLED_HOLES_TOO_CLOSE: item = new DRC_ITEM( holeNearHole ); break; - case DRCE_TRACK_WIDTH: item = new DRC_ITEM( trackWidth ); break; - case DRCE_TOO_SMALL_VIA: item = new DRC_ITEM( viaTooSmall ); break; - case DRCE_VIA_ANNULUS: item = new DRC_ITEM( viaAnnulus ); break; - case DRCE_TOO_SMALL_DRILL: item = new DRC_ITEM( drillTooSmall ); break; - case DRCE_VIA_HOLE_BIGGER: item = new DRC_ITEM( viaHoleLargerThanPad ); break; - case DRCE_PADSTACK: item = new DRC_ITEM( padstack ); break; - case DRCE_TOO_SMALL_MICROVIA: item = new DRC_ITEM( microviaTooSmall ); break; - case DRCE_TOO_SMALL_MICROVIA_DRILL: item = new DRC_ITEM( microviaDrillTooSmall ); break; - case DRCE_KEEPOUT: item = new DRC_ITEM( keepout ); break; - case DRCE_OVERLAPPING_FOOTPRINTS: item = new DRC_ITEM( courtyardsOverlap ); break; - case DRCE_MISSING_COURTYARD: item = new DRC_ITEM( missingCourtyard ); break; - case DRCE_MALFORMED_COURTYARD: item = new DRC_ITEM( malformedCourtyard ); break; - case DRCE_PTH_IN_COURTYARD: item = new DRC_ITEM( pthInsideCourtyard ); break; - case DRCE_NPTH_IN_COURTYARD: item = new DRC_ITEM( npthInsideCourtyard ); break; - case DRCE_DISABLED_LAYER_ITEM: item = new DRC_ITEM( itemOnDisabledLayer ); break; - case DRCE_INVALID_OUTLINE: item = new DRC_ITEM( invalidOutline ); break; - case DRCE_MISSING_FOOTPRINT: item = new DRC_ITEM( duplicateFootprints ); break; - case DRCE_DUPLICATE_FOOTPRINT: item = new DRC_ITEM( missingFootprint ); break; - case DRCE_EXTRA_FOOTPRINT: item = new DRC_ITEM( extraFootprint ); break; - case DRCE_UNRESOLVED_VARIABLE: item = new DRC_ITEM( unresolvedVariable ); break; + case DRCE_UNCONNECTED_ITEMS: return std::make_shared( unconnectedItems ); + case DRCE_SHORTING_ITEMS: return std::make_shared( shortingItems ); + case DRCE_ALLOWED_ITEMS: return std::make_shared( itemsNotAllowed ); + case DRCE_CLEARANCE: return std::make_shared( clearance ); + case DRCE_TRACKS_CROSSING: return std::make_shared( tracksCrossing ); + case DRCE_COPPER_EDGE_CLEARANCE: return std::make_shared( copperEdgeClearance ); + case DRCE_ZONES_INTERSECT: return std::make_shared( zonesIntersect ); + case DRCE_ZONE_HAS_EMPTY_NET: return std::make_shared( zoneHasEmptyNet ); + case DRCE_DANGLING_VIA: return std::make_shared( viaDangling ); + case DRCE_DANGLING_TRACK: return std::make_shared( trackDangling ); + case DRCE_DRILLED_HOLES_TOO_CLOSE: return std::make_shared( holeNearHole ); + case DRCE_TRACK_WIDTH: return std::make_shared( trackWidth ); + case DRCE_TOO_SMALL_VIA: return std::make_shared( viaTooSmall ); + case DRCE_VIA_ANNULUS: return std::make_shared( viaAnnulus ); + case DRCE_TOO_SMALL_DRILL: return std::make_shared( drillTooSmall ); + case DRCE_VIA_HOLE_BIGGER: return std::make_shared( viaHoleLargerThanPad ); + case DRCE_PADSTACK: return std::make_shared( padstack ); + case DRCE_TOO_SMALL_MICROVIA: return std::make_shared( microviaTooSmall ); + case DRCE_TOO_SMALL_MICROVIA_DRILL: return std::make_shared( microviaDrillTooSmall ); + case DRCE_KEEPOUT: return std::make_shared( keepout ); + case DRCE_OVERLAPPING_FOOTPRINTS: return std::make_shared( courtyardsOverlap ); + case DRCE_MISSING_COURTYARD: return std::make_shared( missingCourtyard ); + case DRCE_MALFORMED_COURTYARD: return std::make_shared( malformedCourtyard ); + case DRCE_PTH_IN_COURTYARD: return std::make_shared( pthInsideCourtyard ); + case DRCE_NPTH_IN_COURTYARD: return std::make_shared( npthInsideCourtyard ); + case DRCE_DISABLED_LAYER_ITEM: return std::make_shared( itemOnDisabledLayer ); + case DRCE_INVALID_OUTLINE: return std::make_shared( invalidOutline ); + case DRCE_MISSING_FOOTPRINT: return std::make_shared( duplicateFootprints ); + case DRCE_DUPLICATE_FOOTPRINT: return std::make_shared( missingFootprint ); + case DRCE_EXTRA_FOOTPRINT: return std::make_shared( extraFootprint ); + case DRCE_UNRESOLVED_VARIABLE: return std::make_shared( unresolvedVariable ); default: wxFAIL_MSG( "Unknown DRC error code" ); return nullptr; } - return std::shared_ptr( item ); + return nullptr; } @@ -251,7 +249,7 @@ std::shared_ptr DRC_ITEM::Create( const wxString& aErrorKey ) for( const RC_ITEM& item : allItemTypes ) { if( aErrorKey == item.GetSettingsKey() ) - return std::shared_ptr( new DRC_ITEM( static_cast( item ) ) ); + return std::make_shared( static_cast( item ) ); } // This can happen if a project has old-format exclusions. Just drop these items.