mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-11 11:00:13 +00:00
Migrate RC_ITEM to use shared_ptr
This commit is contained in:
parent
2b6ef6964a
commit
d937fadd6f
common
eeschema
connection_graph.cpp
dialogs
erc.cpperc_item.cpperc_item.herc_settings.cpperc_settings.hsch_eagle_plugin.cppsch_marker.cppsch_marker.hsch_screen.cppinclude
pcbnew
board_design_settings.cppclass_marker_pcb.cppclass_marker_pcb.hcleanup_item.h
dialogs
dialog_cleanup_graphics.cppdialog_cleanup_graphics.hdialog_cleanup_tracks_and_vias.cppdialog_cleanup_tracks_and_vias.hdialog_drc.cppdialog_netlist.cpp
drc
drc.cppdrc.hdrc_clearance_test_functions.cppdrc_courtyard_tester.cppdrc_drilled_hole_tester.cppdrc_item.cppdrc_item.hdrc_keepout_tester.cppdrc_provider.hdrc_rule.cppdrc_rule_parser.cppdrc_textvar_tester.cppfootprint_tester.cppfootprint_tester.h
graphics_cleaner.cppgraphics_cleaner.hpcb_expr_evaluator.cpppcb_expr_evaluator.htracks_cleaner.cpptracks_cleaner.hqa/pcbnew/drc
@ -59,7 +59,7 @@ static const VECTOR2I MarkerShapeCorners[] =
|
||||
const unsigned CORNERS_COUNT = arrayDim( MarkerShapeCorners );
|
||||
|
||||
|
||||
MARKER_BASE::MARKER_BASE( int aScalingFactor, RC_ITEM* aItem, TYPEMARKER aType ) :
|
||||
MARKER_BASE::MARKER_BASE( int aScalingFactor, std::shared_ptr<RC_ITEM> aItem, TYPEMARKER aType ) :
|
||||
m_markerType( aType ),
|
||||
m_excluded( false ),
|
||||
m_rcItem( aItem ),
|
||||
@ -85,8 +85,6 @@ MARKER_BASE::MARKER_BASE( int aScalingFactor, RC_ITEM* aItem, TYPEMARKER aType )
|
||||
|
||||
MARKER_BASE::~MARKER_BASE()
|
||||
{
|
||||
printf("del rcitem %p\n", m_rcItem );
|
||||
delete m_rcItem;
|
||||
}
|
||||
|
||||
|
||||
|
@ -94,7 +94,7 @@ KIID RC_TREE_MODEL::ToUUID( wxDataViewItem aItem )
|
||||
|
||||
if( node )
|
||||
{
|
||||
const RC_ITEM* rc_item = node->m_RcItem;
|
||||
const std::shared_ptr<RC_ITEM> rc_item = node->m_RcItem;
|
||||
|
||||
switch( node->m_Type )
|
||||
{
|
||||
@ -142,7 +142,7 @@ void RC_TREE_MODEL::rebuildModel( RC_ITEMS_PROVIDER* aProvider, int aSeverities
|
||||
{
|
||||
wxWindowUpdateLocker updateLock( m_view );
|
||||
|
||||
RC_ITEM* selectedRcItem = nullptr;
|
||||
std::shared_ptr<RC_ITEM> selectedRcItem = nullptr;
|
||||
|
||||
if( m_view )
|
||||
{
|
||||
@ -170,7 +170,7 @@ void RC_TREE_MODEL::rebuildModel( RC_ITEMS_PROVIDER* aProvider, int aSeverities
|
||||
|
||||
for( int i = 0; m_rcItemsProvider && i < m_rcItemsProvider->GetCount(); ++i )
|
||||
{
|
||||
RC_ITEM* rcItem = m_rcItemsProvider->GetItem( i );
|
||||
std::shared_ptr<RC_ITEM> rcItem = m_rcItemsProvider->GetItem( i );
|
||||
|
||||
m_tree.push_back( new RC_TREE_NODE( nullptr, rcItem, RC_TREE_NODE::MARKER ) );
|
||||
RC_TREE_NODE* n = m_tree.back();
|
||||
@ -279,7 +279,7 @@ void RC_TREE_MODEL::GetValue( wxVariant& aVariant,
|
||||
unsigned int aCol ) const
|
||||
{
|
||||
const RC_TREE_NODE* node = ToNode( aItem );
|
||||
const RC_ITEM* rcItem = node->m_RcItem;
|
||||
const std::shared_ptr<RC_ITEM> rcItem = node->m_RcItem;
|
||||
|
||||
switch( node->m_Type )
|
||||
{
|
||||
@ -394,7 +394,7 @@ void RC_TREE_MODEL::DeleteCurrentItem( bool aDeep )
|
||||
void RC_TREE_MODEL::DeleteItems( bool aCurrentOnly, bool aIncludeExclusions, bool aDeep )
|
||||
{
|
||||
RC_TREE_NODE* current_node = ToNode( m_view->GetCurrentItem() );
|
||||
const RC_ITEM* current_item = current_node ? current_node->m_RcItem : nullptr;
|
||||
const std::shared_ptr<RC_ITEM> current_item = current_node ? current_node->m_RcItem : nullptr;
|
||||
|
||||
if( aCurrentOnly && !current_item )
|
||||
{
|
||||
@ -404,7 +404,7 @@ void RC_TREE_MODEL::DeleteItems( bool aCurrentOnly, bool aIncludeExclusions, boo
|
||||
|
||||
for( int i = m_rcItemsProvider->GetCount() - 1; i >= 0; --i )
|
||||
{
|
||||
RC_ITEM* rcItem = m_rcItemsProvider->GetItem( i );
|
||||
std::shared_ptr<RC_ITEM> rcItem = m_rcItemsProvider->GetItem( i );
|
||||
MARKER_BASE* marker = rcItem->GetParent();
|
||||
bool excluded = marker ? marker->IsExcluded() : false;
|
||||
|
||||
|
@ -50,7 +50,7 @@ public:
|
||||
* Function GetItem
|
||||
* retrieves a RC_ITEM by index.
|
||||
*/
|
||||
virtual RC_ITEM* GetItem( int aIndex ) = 0;
|
||||
virtual std::shared_ptr<RC_ITEM> GetItem( int aIndex ) = 0;
|
||||
|
||||
/**
|
||||
* Function DeleteItem
|
||||
@ -95,7 +95,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
RC_ITEM( RC_ITEM* aItem )
|
||||
RC_ITEM( std::shared_ptr<RC_ITEM> aItem )
|
||||
{
|
||||
m_errorCode = aItem->m_errorCode;
|
||||
m_errorMessage = aItem->m_errorMessage;
|
||||
@ -185,7 +185,7 @@ class RC_TREE_NODE
|
||||
public:
|
||||
enum NODE_TYPE { MARKER, MAIN_ITEM, AUX_ITEM, AUX_ITEM2, AUX_ITEM3 };
|
||||
|
||||
RC_TREE_NODE( RC_TREE_NODE* aParent, RC_ITEM* aRcItem, NODE_TYPE aType ) :
|
||||
RC_TREE_NODE( RC_TREE_NODE* aParent, std::shared_ptr<RC_ITEM> aRcItem, NODE_TYPE aType ) :
|
||||
m_Type( aType ),
|
||||
m_RcItem( aRcItem ),
|
||||
m_Parent( aParent )
|
||||
@ -198,7 +198,7 @@ public:
|
||||
}
|
||||
|
||||
NODE_TYPE m_Type;
|
||||
RC_ITEM* m_RcItem;
|
||||
std::shared_ptr<RC_ITEM> m_RcItem;
|
||||
|
||||
RC_TREE_NODE* m_Parent;
|
||||
std::vector<RC_TREE_NODE*> m_Children;
|
||||
|
@ -172,7 +172,7 @@ bool CONNECTION_SUBGRAPH::ResolveDrivers( bool aCreateMarkers )
|
||||
static_cast<SCH_PIN*>( candidates[0] )->GetTransformedPosition() :
|
||||
candidates[0]->GetPosition();
|
||||
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_DRIVER_CONFLICT );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_DRIVER_CONFLICT );
|
||||
ercItem->SetItems( candidates[0], second_item );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, pos );
|
||||
@ -2118,7 +2118,7 @@ bool CONNECTION_GRAPH::ercCheckBusToNetConflicts( const CONNECTION_SUBGRAPH* aSu
|
||||
|
||||
if( net_item && bus_item )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_BUS_TO_NET_CONFLICT );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_BUS_TO_NET_CONFLICT );
|
||||
ercItem->SetItems( net_item, bus_item );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, net_item->GetPosition() );
|
||||
@ -2186,7 +2186,7 @@ bool CONNECTION_GRAPH::ercCheckBusToBusConflicts( const CONNECTION_SUBGRAPH* aSu
|
||||
|
||||
if( !match )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_BUS_TO_BUS_CONFLICT );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_BUS_TO_BUS_CONFLICT );
|
||||
ercItem->SetItems( label, port );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, label->GetPosition() );
|
||||
@ -2266,7 +2266,7 @@ bool CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts( const CONNECTION_SUBGRAPH
|
||||
|
||||
if( conflict )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_BUS_ENTRY_CONFLICT );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_BUS_ENTRY_CONFLICT );
|
||||
ercItem->SetItems( bus_entry, bus_wire );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, bus_entry->GetPosition() );
|
||||
@ -2319,7 +2319,7 @@ bool CONNECTION_GRAPH::ercCheckNoConnects( const CONNECTION_SUBGRAPH* aSubgraph
|
||||
|
||||
if( pin && has_invalid_items )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_NOCONNECT_CONNECTED );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_NOCONNECT_CONNECTED );
|
||||
ercItem->SetItems( pin );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, pin->GetTransformedPosition() );
|
||||
@ -2330,7 +2330,7 @@ bool CONNECTION_GRAPH::ercCheckNoConnects( const CONNECTION_SUBGRAPH* aSubgraph
|
||||
|
||||
if( !has_other_items )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_NOCONNECT_NOT_CONNECTED );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_NOCONNECT_NOT_CONNECTED );
|
||||
ercItem->SetItems( aSubgraph->m_no_connect );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, aSubgraph->m_no_connect->GetPosition() );
|
||||
@ -2385,7 +2385,7 @@ bool CONNECTION_GRAPH::ercCheckNoConnects( const CONNECTION_SUBGRAPH* aSubgraph
|
||||
|
||||
if( pin && !has_other_connections && pin->GetType() != ELECTRICAL_PINTYPE::PT_NC )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_PIN_NOT_CONNECTED );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_PIN_NOT_CONNECTED );
|
||||
ercItem->SetItems( pin );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, pin->GetTransformedPosition() );
|
||||
@ -2479,7 +2479,7 @@ bool CONNECTION_GRAPH::ercCheckLabels( const CONNECTION_SUBGRAPH* aSubgraph )
|
||||
|
||||
if( !has_other_connections )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( is_global ? ERCE_GLOBLABEL : ERCE_LABEL_NOT_CONNECTED );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( is_global ? ERCE_GLOBLABEL : ERCE_LABEL_NOT_CONNECTED );
|
||||
ercItem->SetItems( text );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, text->GetPosition() );
|
||||
|
@ -315,7 +315,7 @@ void DIALOG_ERC::TestErc( REPORTER& aReporter )
|
||||
pin_to_net_map[pin_name],
|
||||
item->GetNetName() );
|
||||
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_DIFFERENT_UNIT_NET );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_DIFFERENT_UNIT_NET );
|
||||
ercItem->SetErrorMessage( msg );
|
||||
ercItem->SetItems( item->m_Comp );
|
||||
|
||||
@ -419,7 +419,7 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||
|
||||
ERC_SETTINGS& settings = m_parent->Schematic().ErcSettings();
|
||||
|
||||
RC_ITEM* rcItem = node->m_RcItem;
|
||||
std::shared_ptr<RC_ITEM> rcItem = node->m_RcItem;
|
||||
wxString listName;
|
||||
wxMenu menu;
|
||||
wxString msg;
|
||||
|
@ -51,7 +51,7 @@ DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP( SCH_EDIT_FRAME* aFrame ) :
|
||||
m_pinToPinError = ERC_ITEM::Create( ERCE_PIN_TO_PIN_WARNING );
|
||||
m_severities = new PANEL_SETUP_SEVERITIES( this, ERC_ITEM::GetItemsWithSeverities(),
|
||||
schematic.ErcSettings().m_Severities,
|
||||
m_pinToPinError );
|
||||
m_pinToPinError.get() );
|
||||
|
||||
m_textVars = new PANEL_TEXT_VARIABLES( m_treebook, &Prj() );
|
||||
|
||||
@ -87,8 +87,6 @@ DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP( SCH_EDIT_FRAME* aFrame ) :
|
||||
|
||||
DIALOG_SCHEMATIC_SETUP::~DIALOG_SCHEMATIC_SETUP()
|
||||
{
|
||||
delete m_pinToPinError;
|
||||
|
||||
m_treebook->Disconnect( wxEVT_TREEBOOK_PAGE_CHANGED,
|
||||
wxBookCtrlEventHandler( DIALOG_SCHEMATIC_SETUP::OnPageChange ), NULL, this );
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ protected:
|
||||
PANEL_SETUP_SEVERITIES* m_severities;
|
||||
PANEL_SETUP_NETCLASSES* m_netclasses;
|
||||
PANEL_TEXT_VARIABLES* m_textVars;
|
||||
ERC_ITEM* m_pinToPinError;
|
||||
std::shared_ptr<ERC_ITEM> m_pinToPinError;
|
||||
|
||||
std::vector<bool> m_macHack;
|
||||
|
||||
|
@ -127,7 +127,7 @@ int ERC_TESTER::TestDuplicateSheetNames( bool aCreateMarker )
|
||||
{
|
||||
if( aCreateMarker )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_DUPLICATE_SHEET_NAME );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_DUPLICATE_SHEET_NAME );
|
||||
ercItem->SetItems( sheet, test_item );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, sheet->GetPosition() );
|
||||
@ -178,7 +178,7 @@ void ERC_TESTER::TestTextVars( KIGFX::WS_PROXY_VIEW_ITEM* aWorksheet )
|
||||
pos = component->GetTransform().TransformCoordinate( pos );
|
||||
pos += component->GetPosition();
|
||||
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
ercItem->SetItems( &field );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, pos );
|
||||
@ -194,7 +194,7 @@ void ERC_TESTER::TestTextVars( KIGFX::WS_PROXY_VIEW_ITEM* aWorksheet )
|
||||
{
|
||||
if( unresolved( field.GetShownText() ) )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
ercItem->SetItems( &field );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, field.GetPosition() );
|
||||
@ -206,7 +206,7 @@ void ERC_TESTER::TestTextVars( KIGFX::WS_PROXY_VIEW_ITEM* aWorksheet )
|
||||
{
|
||||
if( pin->GetShownText().Matches( wxT( "*${*}*" ) ) )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
ercItem->SetItems( pin );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, pin->GetPosition() );
|
||||
@ -218,7 +218,7 @@ void ERC_TESTER::TestTextVars( KIGFX::WS_PROXY_VIEW_ITEM* aWorksheet )
|
||||
{
|
||||
if( text->GetShownText().Matches( wxT( "*${*}*" ) ) )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
ercItem->SetItems( text );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, text->GetPosition() );
|
||||
@ -233,7 +233,7 @@ void ERC_TESTER::TestTextVars( KIGFX::WS_PROXY_VIEW_ITEM* aWorksheet )
|
||||
{
|
||||
if( text->GetShownText().Matches( wxT( "*${*}*" ) ) )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
|
||||
ercItem->SetErrorMessage( _( "Unresolved text variable in worksheet." ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, text->GetPosition() );
|
||||
@ -268,7 +268,7 @@ int ERC_TESTER::TestConflictingBusAliases()
|
||||
alias->GetParent()->GetFileName(),
|
||||
test->GetParent()->GetFileName() );
|
||||
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_BUS_ALIAS_CONFLICT );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_BUS_ALIAS_CONFLICT );
|
||||
ercItem->SetErrorMessage( msg );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, wxPoint() );
|
||||
@ -336,7 +336,7 @@ int ERC_TESTER::TestMultiunitFootprints()
|
||||
msg.Printf( _( "Different footprints assigned to %s and %s" ),
|
||||
unitName, secondName );
|
||||
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_DIFFERENT_UNIT_FP );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_DIFFERENT_UNIT_FP );
|
||||
ercItem->SetErrorMessage( msg );
|
||||
ercItem->SetItems( unit, secondUnit );
|
||||
|
||||
@ -368,7 +368,7 @@ void ERC_TESTER::diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItem
|
||||
{
|
||||
if( settings.GetSeverity( ERCE_PIN_NOT_DRIVEN ) != RPT_SEVERITY_IGNORE )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_PIN_NOT_DRIVEN );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_PIN_NOT_DRIVEN );
|
||||
ercItem->SetItems( pin );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, aNetItemRef->m_Start );
|
||||
@ -382,7 +382,7 @@ void ERC_TESTER::diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItem
|
||||
{
|
||||
if( settings.GetSeverity( ERCE_PIN_TO_PIN_WARNING ) != RPT_SEVERITY_IGNORE )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create(
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create(
|
||||
aDiag == PIN_ERROR::PP_ERROR ? ERCE_PIN_TO_PIN_ERROR : ERCE_PIN_TO_PIN_WARNING );
|
||||
ercItem->SetItems( pin, static_cast<SCH_PIN*>( aNetItemTst->m_Comp ) );
|
||||
|
||||
@ -557,7 +557,7 @@ int ERC_TESTER::TestNoConnectPins()
|
||||
{
|
||||
err_count++;
|
||||
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_NOCONNECT_CONNECTED );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_NOCONNECT_CONNECTED );
|
||||
|
||||
ercItem->SetItems( pair.second[0], pair.second[1],
|
||||
pair.second.size() > 2 ? pair.second[2] : nullptr,
|
||||
@ -763,7 +763,7 @@ static int countIndenticalLabels( std::vector<NETLIST_OBJECT*>& aList, NETLIST_O
|
||||
// Helper function: creates a marker for similar labels ERC warning
|
||||
static void SimilarLabelsDiagnose( NETLIST_OBJECT* aItemA, NETLIST_OBJECT* aItemB )
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( ERCE_SIMILAR_LABELS );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_SIMILAR_LABELS );
|
||||
ercItem->SetItems( aItemA->m_Comp, aItemB->m_Comp );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, aItemA->m_Start );
|
||||
|
@ -141,73 +141,76 @@ std::vector<std::reference_wrapper<RC_ITEM>> ERC_ITEM::allItemTypes( {
|
||||
|
||||
|
||||
|
||||
ERC_ITEM* ERC_ITEM::Create( int aErrorCode )
|
||||
std::shared_ptr<ERC_ITEM> ERC_ITEM::Create( int aErrorCode )
|
||||
{
|
||||
ERC_ITEM *item;
|
||||
switch( aErrorCode )
|
||||
{
|
||||
case ERCE_DUPLICATE_SHEET_NAME:
|
||||
return new ERC_ITEM( duplicateSheetName );
|
||||
item = new ERC_ITEM( duplicateSheetName ); break;
|
||||
|
||||
case ERCE_PIN_NOT_CONNECTED:
|
||||
return new ERC_ITEM( pinNotConnected );
|
||||
item = new ERC_ITEM( pinNotConnected ); break;
|
||||
|
||||
case ERCE_PIN_NOT_DRIVEN:
|
||||
return new ERC_ITEM( pinNotDriven );
|
||||
item = new ERC_ITEM( pinNotDriven ); break;
|
||||
|
||||
case ERCE_PIN_TO_PIN_WARNING:
|
||||
return new ERC_ITEM( pinTableWarning );
|
||||
item = new ERC_ITEM( pinTableWarning ); break;
|
||||
|
||||
case ERCE_PIN_TO_PIN_ERROR:
|
||||
return new ERC_ITEM( pinTableError );
|
||||
item = new ERC_ITEM( pinTableError ); break;
|
||||
|
||||
case ERCE_HIERACHICAL_LABEL:
|
||||
return new ERC_ITEM( hierLabelMismatch );
|
||||
item = new ERC_ITEM( hierLabelMismatch ); break;
|
||||
|
||||
case ERCE_NOCONNECT_CONNECTED:
|
||||
return new ERC_ITEM( noConnectConnected );
|
||||
item = new ERC_ITEM( noConnectConnected ); break;
|
||||
|
||||
case ERCE_NOCONNECT_NOT_CONNECTED:
|
||||
return new ERC_ITEM( noConnectDangling );
|
||||
item = new ERC_ITEM( noConnectDangling ); break;
|
||||
|
||||
case ERCE_LABEL_NOT_CONNECTED:
|
||||
return new ERC_ITEM( labelDangling );
|
||||
item = new ERC_ITEM( labelDangling ); break;
|
||||
|
||||
case ERCE_SIMILAR_LABELS:
|
||||
return new ERC_ITEM( similarLabels );
|
||||
item = new ERC_ITEM( similarLabels ); break;
|
||||
|
||||
case ERCE_DIFFERENT_UNIT_FP:
|
||||
return new ERC_ITEM( differentUnitFootprint );
|
||||
item = new ERC_ITEM( differentUnitFootprint ); break;
|
||||
|
||||
case ERCE_DIFFERENT_UNIT_NET:
|
||||
return new ERC_ITEM( differentUnitNet );
|
||||
item = new ERC_ITEM( differentUnitNet ); break;
|
||||
|
||||
case ERCE_BUS_ALIAS_CONFLICT:
|
||||
return new ERC_ITEM( busDefinitionConflict );
|
||||
item = new ERC_ITEM( busDefinitionConflict ); break;
|
||||
|
||||
case ERCE_DRIVER_CONFLICT:
|
||||
return new ERC_ITEM( multipleNetNames );
|
||||
item = new ERC_ITEM( multipleNetNames ); break;
|
||||
|
||||
case ERCE_BUS_ENTRY_CONFLICT:
|
||||
return new ERC_ITEM( netNotBusMember );
|
||||
item = new ERC_ITEM( netNotBusMember ); break;
|
||||
|
||||
case ERCE_BUS_LABEL_ERROR:
|
||||
return new ERC_ITEM( busLabelSyntax );
|
||||
item = new ERC_ITEM( busLabelSyntax ); break;
|
||||
|
||||
case ERCE_BUS_TO_BUS_CONFLICT:
|
||||
return new ERC_ITEM( busToBusConflict );
|
||||
item = new ERC_ITEM( busToBusConflict ); break;
|
||||
|
||||
case ERCE_BUS_TO_NET_CONFLICT:
|
||||
return new ERC_ITEM( busToNetConflict );
|
||||
item = new ERC_ITEM( busToNetConflict ); break;
|
||||
|
||||
case ERCE_GLOBLABEL:
|
||||
return new ERC_ITEM( globalLabelDangling );
|
||||
item = new ERC_ITEM( globalLabelDangling ); break;
|
||||
|
||||
case ERCE_UNRESOLVED_VARIABLE:
|
||||
return new ERC_ITEM( unresolvedVariable );
|
||||
item = new ERC_ITEM( unresolvedVariable ); break;
|
||||
|
||||
case ERCE_UNSPECIFIED:
|
||||
default:
|
||||
wxFAIL_MSG( "Unknown ERC error code" );
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return std::shared_ptr<ERC_ITEM>( item );
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
* Constructs an ERC_ITEM for the given error code
|
||||
* @see ERCE_T
|
||||
*/
|
||||
static ERC_ITEM* Create( int aErrorCode );
|
||||
static std::shared_ptr<ERC_ITEM> Create( int aErrorCode );
|
||||
|
||||
static std::vector<std::reference_wrapper<RC_ITEM>> GetItemsWithSeverities()
|
||||
{
|
||||
|
@ -296,11 +296,17 @@ int SHEETLIST_ERC_ITEMS_PROVIDER::GetCount( int aSeverity )
|
||||
}
|
||||
|
||||
|
||||
ERC_ITEM* SHEETLIST_ERC_ITEMS_PROVIDER::GetItem( int aIndex )
|
||||
std::shared_ptr<ERC_ITEM> SHEETLIST_ERC_ITEMS_PROVIDER::GetERCItem( int aIndex )
|
||||
{
|
||||
SCH_MARKER* marker = m_filteredMarkers[ aIndex ];
|
||||
|
||||
return marker ? static_cast<ERC_ITEM*>( marker->GetRCItem() ) : nullptr;
|
||||
return marker ? std::static_pointer_cast<ERC_ITEM>( marker->GetRCItem() ) : nullptr;
|
||||
}
|
||||
|
||||
|
||||
std::shared_ptr<RC_ITEM> SHEETLIST_ERC_ITEMS_PROVIDER::GetItem( int aIndex )
|
||||
{
|
||||
return GetERCItem( aIndex );
|
||||
}
|
||||
|
||||
|
||||
|
@ -187,7 +187,9 @@ public:
|
||||
|
||||
int GetCount( int aSeverity = -1 ) override;
|
||||
|
||||
ERC_ITEM* GetItem( int aIndex ) override;
|
||||
std::shared_ptr<RC_ITEM> GetItem( int aIndex ) override;
|
||||
|
||||
std::shared_ptr<ERC_ITEM> GetERCItem( int aIndex );
|
||||
|
||||
void DeleteItem( int aIndex, bool aDeep ) override;
|
||||
|
||||
|
@ -2047,7 +2047,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, linestart );
|
||||
@ -2085,7 +2085,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, linestart );
|
||||
@ -2127,7 +2127,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, lineend );
|
||||
@ -2164,7 +2164,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, lineend );
|
||||
@ -2206,7 +2206,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, linestart );
|
||||
@ -2238,7 +2238,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, linestart );
|
||||
@ -2277,7 +2277,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, lineend );
|
||||
@ -2309,7 +2309,7 @@ void SCH_EAGLE_PLUGIN::addBusEntries()
|
||||
}
|
||||
else
|
||||
{
|
||||
ERC_ITEM* ercItem = ERC_ITEM::Create( 0 );
|
||||
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( 0 );
|
||||
ercItem->SetErrorMessage( _( "Bus Entry needed" ) );
|
||||
|
||||
SCH_MARKER* marker = new SCH_MARKER( ercItem, lineend );
|
||||
|
@ -41,7 +41,7 @@
|
||||
#define SCALING_FACTOR Millimeter2iu( 0.15 )
|
||||
|
||||
|
||||
SCH_MARKER::SCH_MARKER( ERC_ITEM* aItem, const wxPoint& aPos ) :
|
||||
SCH_MARKER::SCH_MARKER( std::shared_ptr<ERC_ITEM> aItem, const wxPoint& aPos ) :
|
||||
SCH_ITEM( nullptr, SCH_MARKER_T ),
|
||||
MARKER_BASE( SCALING_FACTOR, aItem, MARKER_BASE::MARKER_ERC )
|
||||
{
|
||||
|
@ -33,7 +33,7 @@
|
||||
class SCH_MARKER : public SCH_ITEM, public MARKER_BASE
|
||||
{
|
||||
public:
|
||||
SCH_MARKER( ERC_ITEM* aItem, const wxPoint& aPos );
|
||||
SCH_MARKER( std::shared_ptr<ERC_ITEM> aItem, const wxPoint& aPos );
|
||||
|
||||
// Do not create a copy constructor. The one generated by the compiler is adequate.
|
||||
|
||||
|
@ -1346,7 +1346,7 @@ void SCH_SCREENS::DeleteMarkers( enum MARKER_BASE::TYPEMARKER aMarkerType, int a
|
||||
for( SCH_ITEM* item : screen->Items().OfType( SCH_MARKER_T ) )
|
||||
{
|
||||
SCH_MARKER* marker = static_cast<SCH_MARKER*>( item );
|
||||
RC_ITEM* rcItem = marker->GetRCItem();
|
||||
std::shared_ptr<RC_ITEM>rcItem = marker->GetRCItem();
|
||||
|
||||
if( marker->GetMarkerType() == aMarkerType
|
||||
&& ( aErrorCode == ERCE_UNSPECIFIED || rcItem->GetErrorCode() == aErrorCode )
|
||||
|
@ -26,6 +26,8 @@
|
||||
#ifndef MARKER_BASE_H
|
||||
#define MARKER_BASE_H
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <rc_item.h>
|
||||
#include <gr_basic.h>
|
||||
#include <eda_rect.h>
|
||||
@ -61,7 +63,7 @@ public:
|
||||
protected:
|
||||
TYPEMARKER m_markerType; // The type of marker (useful to filter markers)
|
||||
bool m_excluded; // User has excluded this specific error
|
||||
RC_ITEM* m_rcItem;
|
||||
std::shared_ptr<RC_ITEM> m_rcItem;
|
||||
|
||||
int m_scalingFactor; // Scaling factor to convert corners coordinates
|
||||
// to internat units coordinates
|
||||
@ -71,8 +73,7 @@ protected:
|
||||
|
||||
public:
|
||||
|
||||
MARKER_BASE( int aScalingFactor, RC_ITEM* aItem, TYPEMARKER aType = MARKER_UNSPEC );
|
||||
|
||||
MARKER_BASE( int aScalingFactor, std::shared_ptr<RC_ITEM> aItem, TYPEMARKER aType = MARKER_UNSPEC );
|
||||
virtual ~MARKER_BASE();
|
||||
|
||||
/** The scaling factor to convert polygonal shape coordinates to internal units
|
||||
@ -114,8 +115,9 @@ public:
|
||||
* interface may be used.
|
||||
* @return const& DRC_ITEM
|
||||
*/
|
||||
RC_ITEM* GetRCItem() { return m_rcItem; }
|
||||
const RC_ITEM* GetRCItem() const { return m_rcItem; }
|
||||
|
||||
// fixme: use shared_ptr
|
||||
std::shared_ptr<RC_ITEM> GetRCItem() const { return m_rcItem; }
|
||||
|
||||
/**
|
||||
* Tests if the given wxPoint is within the bounds of this object.
|
||||
|
@ -677,9 +677,8 @@ bool BOARD_DESIGN_SETTINGS::LoadFromFile( const wxString& aDirectory )
|
||||
auto drcName =
|
||||
[]( int aCode ) -> std::string
|
||||
{
|
||||
DRC_ITEM* item = DRC_ITEM::Create( aCode );
|
||||
std::shared_ptr<DRC_ITEM> item = DRC_ITEM::Create( aCode );
|
||||
wxString name = item->GetSettingsKey();
|
||||
delete item;
|
||||
return std::string( name.ToUTF8() );
|
||||
};
|
||||
|
||||
|
@ -42,9 +42,10 @@
|
||||
#define SCALING_FACTOR Millimeter2iu( 0.1 )
|
||||
|
||||
|
||||
MARKER_PCB::MARKER_PCB( DRC_ITEM* aItem, const wxPoint& aPosition ) :
|
||||
BOARD_ITEM( nullptr, PCB_MARKER_T ), // parent set during BOARD::Add()
|
||||
MARKER_BASE( SCALING_FACTOR, aItem )
|
||||
|
||||
MARKER_PCB::MARKER_PCB( std::shared_ptr<RC_ITEM> aItem, const wxPoint& aPosition ) :
|
||||
BOARD_ITEM( nullptr, PCB_MARKER_T ), // parent set during BOARD::Add()
|
||||
MARKER_BASE( SCALING_FACTOR, aItem )
|
||||
{
|
||||
if( m_rcItem )
|
||||
m_rcItem->SetParent( this );
|
||||
@ -76,8 +77,8 @@ MARKER_PCB* MARKER_PCB::Deserialize( const wxString& data )
|
||||
wxPoint markerPos( (int) strtol( props[1].c_str(), nullptr, 10 ),
|
||||
(int) strtol( props[2].c_str(), nullptr, 10 ) );
|
||||
|
||||
DRC_ITEM* drcItem = DRC_ITEM::Create( props[0] );
|
||||
|
||||
std::shared_ptr<DRC_ITEM> drcItem = DRC_ITEM::Create( props[0] );
|
||||
|
||||
if( !drcItem )
|
||||
return nullptr;
|
||||
|
||||
|
@ -46,8 +46,7 @@ class MSG_PANEL_ITEM;
|
||||
class MARKER_PCB : public BOARD_ITEM, public MARKER_BASE
|
||||
{
|
||||
public:
|
||||
MARKER_PCB( DRC_ITEM* aItem, const wxPoint& aPosition );
|
||||
|
||||
MARKER_PCB( std::shared_ptr<RC_ITEM> aItem, const wxPoint& aPosition );
|
||||
~MARKER_PCB();
|
||||
|
||||
static inline bool ClassOf( const EDA_ITEM* aItem )
|
||||
|
@ -73,11 +73,11 @@ public:
|
||||
*/
|
||||
class VECTOR_CLEANUP_ITEMS_PROVIDER : public RC_ITEMS_PROVIDER
|
||||
{
|
||||
std::vector<CLEANUP_ITEM*>* m_sourceVector; // owns its CLEANUP_ITEMs
|
||||
std::vector<std::shared_ptr<CLEANUP_ITEM> >* m_sourceVector; // owns its CLEANUP_ITEMs
|
||||
|
||||
public:
|
||||
|
||||
VECTOR_CLEANUP_ITEMS_PROVIDER( std::vector<CLEANUP_ITEM*>* aList ) :
|
||||
VECTOR_CLEANUP_ITEMS_PROVIDER( std::vector<std::shared_ptr<CLEANUP_ITEM> >* aList ) :
|
||||
m_sourceVector( aList )
|
||||
{
|
||||
}
|
||||
@ -91,18 +91,22 @@ public:
|
||||
return m_sourceVector->size();
|
||||
}
|
||||
|
||||
CLEANUP_ITEM* GetItem( int aIndex ) override
|
||||
std::shared_ptr<RC_ITEM> GetItem( int aIndex ) override
|
||||
{
|
||||
return m_sourceVector->at( aIndex );
|
||||
}
|
||||
|
||||
std::shared_ptr<CLEANUP_ITEM> GetCleanupItem( int aIndex )
|
||||
{
|
||||
return m_sourceVector->at( aIndex );
|
||||
}
|
||||
|
||||
|
||||
void DeleteItem( int aIndex, bool aDeep ) override
|
||||
{
|
||||
if( aDeep )
|
||||
{
|
||||
CLEANUP_ITEM* item = m_sourceVector->at( aIndex );
|
||||
delete item;
|
||||
|
||||
auto item = m_sourceVector->at( aIndex );
|
||||
m_sourceVector->erase( m_sourceVector->begin() + aIndex );
|
||||
}
|
||||
}
|
||||
@ -111,9 +115,6 @@ public:
|
||||
{
|
||||
if( aDeep )
|
||||
{
|
||||
for( CLEANUP_ITEM* item : *m_sourceVector )
|
||||
delete item;
|
||||
|
||||
m_sourceVector->clear();
|
||||
}
|
||||
}
|
||||
|
@ -50,9 +50,6 @@ DIALOG_CLEANUP_GRAPHICS::DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, bool
|
||||
|
||||
DIALOG_CLEANUP_GRAPHICS::~DIALOG_CLEANUP_GRAPHICS()
|
||||
{
|
||||
for( CLEANUP_ITEM* item : m_items )
|
||||
delete item;
|
||||
|
||||
m_changesTreeModel->DecRef();
|
||||
}
|
||||
|
||||
@ -97,9 +94,6 @@ void DIALOG_CLEANUP_GRAPHICS::doCleanup( bool aDryRun )
|
||||
m_changesTreeModel->SetProvider( nullptr );
|
||||
}
|
||||
|
||||
for( CLEANUP_ITEM* item : m_items )
|
||||
delete item;
|
||||
|
||||
m_items.clear();
|
||||
|
||||
// Old model has to be refreshed, GAL normally does not keep updating it
|
||||
|
@ -36,7 +36,7 @@ class DIALOG_CLEANUP_GRAPHICS: public DIALOG_CLEANUP_GRAPHICS_BASE
|
||||
{
|
||||
PCB_BASE_FRAME* m_parentFrame;
|
||||
bool m_isModEdit;
|
||||
std::vector<CLEANUP_ITEM*> m_items;
|
||||
std::vector<std::shared_ptr<CLEANUP_ITEM> > m_items;
|
||||
RC_TREE_MODEL* m_changesTreeModel;
|
||||
|
||||
void doCleanup( bool aDryRun );
|
||||
|
@ -71,9 +71,6 @@ DIALOG_CLEANUP_TRACKS_AND_VIAS::~DIALOG_CLEANUP_TRACKS_AND_VIAS()
|
||||
cfg->m_Cleanup.cleanup_tracks_in_pad = m_deleteTracksInPadsOpt->GetValue();
|
||||
cfg->m_Cleanup.delete_dangling_vias = m_deleteDanglingViasOpt->GetValue();
|
||||
|
||||
for( CLEANUP_ITEM* item : m_items )
|
||||
delete item;
|
||||
|
||||
m_changesTreeModel->DecRef();
|
||||
}
|
||||
|
||||
@ -115,9 +112,6 @@ void DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup( bool aDryRun )
|
||||
m_changesTreeModel->SetProvider( nullptr );
|
||||
}
|
||||
|
||||
for( CLEANUP_ITEM* item : m_items )
|
||||
delete item;
|
||||
|
||||
m_items.clear();
|
||||
|
||||
// Old model has to be refreshed, GAL normally does not keep updating it
|
||||
|
@ -35,7 +35,7 @@ class PCB_EDIT_FRAME;
|
||||
class DIALOG_CLEANUP_TRACKS_AND_VIAS: public DIALOG_CLEANUP_TRACKS_AND_VIAS_BASE
|
||||
{
|
||||
PCB_EDIT_FRAME* m_parentFrame;
|
||||
std::vector<CLEANUP_ITEM*> m_items;
|
||||
std::vector<std::shared_ptr<CLEANUP_ITEM> > m_items;
|
||||
RC_TREE_MODEL* m_changesTreeModel;
|
||||
|
||||
void doCleanup( bool aDryRun );
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user