Replaced Copy() method with operator=. Removed Copy() where default copy ctor was enough.
This commit is contained in:
+73
-91
@@ -83,7 +83,6 @@ MODULE::MODULE( const MODULE& aModule ) :
|
||||
{
|
||||
m_Pos = aModule.m_Pos;
|
||||
m_fpid = aModule.m_fpid;
|
||||
m_Layer = aModule.m_Layer;
|
||||
m_Attributs = aModule.m_Attributs;
|
||||
m_ModuleStatus = aModule.m_ModuleStatus;
|
||||
m_Orient = aModule.m_Orient;
|
||||
@@ -105,35 +104,27 @@ MODULE::MODULE( const MODULE& aModule ) :
|
||||
// Copy reference and value.
|
||||
m_Reference = new TEXTE_MODULE( *aModule.m_Reference );
|
||||
m_Reference->SetParent( this );
|
||||
|
||||
m_Value = new TEXTE_MODULE( *aModule.m_Value );
|
||||
m_Value->SetParent( this );
|
||||
|
||||
// Copy auxiliary data: Pads
|
||||
for( D_PAD* pad = aModule.m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
D_PAD* newpad = new D_PAD( *pad );
|
||||
assert( newpad->GetNet() == pad->GetNet() );
|
||||
newpad->SetParent( this );
|
||||
m_Pads.PushBack( newpad );
|
||||
Add( new D_PAD( *pad ) );
|
||||
}
|
||||
|
||||
// Copy auxiliary data: Drawings
|
||||
for( BOARD_ITEM* item = aModule.m_Drawings; item; item = item->Next() )
|
||||
{
|
||||
BOARD_ITEM* newItem;
|
||||
|
||||
switch( item->Type() )
|
||||
{
|
||||
case PCB_MODULE_TEXT_T:
|
||||
case PCB_MODULE_EDGE_T:
|
||||
newItem = static_cast<BOARD_ITEM*>( item->Clone() );
|
||||
newItem->SetParent( this );
|
||||
m_Drawings.PushBack( newItem );
|
||||
Add( static_cast<BOARD_ITEM*>( item->Clone() ) );
|
||||
break;
|
||||
|
||||
default:
|
||||
wxLogMessage( wxT( "MODULE::Copy() Internal Err: unknown type" ) );
|
||||
wxLogMessage( wxT( "Class MODULE copy constructor internal error: unknown type" ) );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -161,6 +152,76 @@ MODULE::~MODULE()
|
||||
delete m_initial_comments;
|
||||
}
|
||||
|
||||
|
||||
MODULE& MODULE::operator=( const MODULE& aOther )
|
||||
{
|
||||
BOARD_ITEM::operator=( aOther );
|
||||
|
||||
m_Pos = aOther.m_Pos;
|
||||
m_fpid = aOther.m_fpid;
|
||||
m_Attributs = aOther.m_Attributs;
|
||||
m_ModuleStatus = aOther.m_ModuleStatus;
|
||||
m_Orient = aOther.m_Orient;
|
||||
m_BoundaryBox = aOther.m_BoundaryBox;
|
||||
m_CntRot90 = aOther.m_CntRot90;
|
||||
m_CntRot180 = aOther.m_CntRot180;
|
||||
m_LastEditTime = aOther.m_LastEditTime;
|
||||
m_Link = aOther.m_Link;
|
||||
m_Path = aOther.m_Path; //is this correct behavior?
|
||||
|
||||
m_LocalClearance = aOther.m_LocalClearance;
|
||||
m_LocalSolderMaskMargin = aOther.m_LocalSolderMaskMargin;
|
||||
m_LocalSolderPasteMargin = aOther.m_LocalSolderPasteMargin;
|
||||
m_LocalSolderPasteMarginRatio = aOther.m_LocalSolderPasteMarginRatio;
|
||||
m_ZoneConnection = aOther.m_ZoneConnection;
|
||||
m_ThermalWidth = aOther.m_ThermalWidth;
|
||||
m_ThermalGap = aOther.m_ThermalGap;
|
||||
|
||||
// Copy reference and value
|
||||
*m_Reference = *aOther.m_Reference;
|
||||
m_Reference->SetParent( this );
|
||||
*m_Value = *aOther.m_Value;
|
||||
m_Value->SetParent( this );
|
||||
|
||||
// Copy auxiliary data: Pads
|
||||
m_Pads.DeleteAll();
|
||||
|
||||
for( D_PAD* pad = aOther.m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
Add( new D_PAD( *pad ) );
|
||||
}
|
||||
|
||||
// Copy auxiliary data: Drawings
|
||||
m_Drawings.DeleteAll();
|
||||
|
||||
for( BOARD_ITEM* item = aOther.m_Drawings; item; item = item->Next() )
|
||||
{
|
||||
switch( item->Type() )
|
||||
{
|
||||
case PCB_MODULE_TEXT_T:
|
||||
case PCB_MODULE_EDGE_T:
|
||||
Add( static_cast<BOARD_ITEM*>( item->Clone() ) );
|
||||
break;
|
||||
|
||||
default:
|
||||
wxLogMessage( wxT( "MODULE::operator=() internal error: unknown type" ) );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Copy auxiliary data: 3D_Drawings info
|
||||
m_3D_Drawings.clear();
|
||||
m_3D_Drawings = aOther.m_3D_Drawings;
|
||||
m_Doc = aOther.m_Doc;
|
||||
m_KeyWord = aOther.m_KeyWord;
|
||||
|
||||
// Ensure auxiliary data is up to date
|
||||
CalculateBoundingBox();
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function ClearAllNets
|
||||
* Clear (i.e. force the ORPHANED dummy net info) the net info which
|
||||
@@ -195,85 +256,6 @@ void MODULE::DrawAncre( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& offset,
|
||||
}
|
||||
|
||||
|
||||
void MODULE::Copy( MODULE* aModule )
|
||||
{
|
||||
m_Pos = aModule->m_Pos;
|
||||
m_Layer = aModule->m_Layer;
|
||||
m_fpid = aModule->m_fpid;
|
||||
m_Attributs = aModule->m_Attributs;
|
||||
m_ModuleStatus = aModule->m_ModuleStatus;
|
||||
m_Orient = aModule->m_Orient;
|
||||
m_BoundaryBox = aModule->m_BoundaryBox;
|
||||
m_CntRot90 = aModule->m_CntRot90;
|
||||
m_CntRot180 = aModule->m_CntRot180;
|
||||
m_LastEditTime = aModule->m_LastEditTime;
|
||||
m_Link = aModule->m_Link;
|
||||
m_Path = aModule->m_Path; //is this correct behavior?
|
||||
SetTimeStamp( GetNewTimeStamp() );
|
||||
|
||||
m_LocalClearance = aModule->m_LocalClearance;
|
||||
m_LocalSolderMaskMargin = aModule->m_LocalSolderMaskMargin;
|
||||
m_LocalSolderPasteMargin = aModule->m_LocalSolderPasteMargin;
|
||||
m_LocalSolderPasteMarginRatio = aModule->m_LocalSolderPasteMarginRatio;
|
||||
m_ZoneConnection = aModule->m_ZoneConnection;
|
||||
m_ThermalWidth = aModule->m_ThermalWidth;
|
||||
m_ThermalGap = aModule->m_ThermalGap;
|
||||
|
||||
// Copy reference and value.
|
||||
m_Reference->Copy( aModule->m_Reference );
|
||||
m_Value->Copy( aModule->m_Value );
|
||||
|
||||
// Copy auxiliary data: Pads
|
||||
m_Pads.DeleteAll();
|
||||
|
||||
for( D_PAD* pad = aModule->m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
D_PAD* newpad = new D_PAD( this );
|
||||
newpad->Copy( pad );
|
||||
m_Pads.PushBack( newpad );
|
||||
}
|
||||
|
||||
// Copy auxiliary data: Drawings
|
||||
m_Drawings.DeleteAll();
|
||||
|
||||
for( BOARD_ITEM* item = aModule->m_Drawings; item; item = item->Next() )
|
||||
{
|
||||
switch( item->Type() )
|
||||
{
|
||||
case PCB_MODULE_TEXT_T:
|
||||
{
|
||||
TEXTE_MODULE* textm = new TEXTE_MODULE( this );
|
||||
textm->Copy( static_cast<TEXTE_MODULE*>( item ) );
|
||||
m_Drawings.PushBack( textm );
|
||||
break;
|
||||
}
|
||||
|
||||
case PCB_MODULE_EDGE_T:
|
||||
{
|
||||
EDGE_MODULE * edge;
|
||||
edge = new EDGE_MODULE( this );
|
||||
edge->Copy( (EDGE_MODULE*) item );
|
||||
m_Drawings.PushBack( edge );
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
wxLogMessage( wxT( "MODULE::Copy() Internal Err: unknown type" ) );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Copy auxiliary data: 3D_Drawings info
|
||||
m_3D_Drawings.clear();
|
||||
m_3D_Drawings = aModule->m_3D_Drawings;
|
||||
m_Doc = aModule->m_Doc;
|
||||
m_KeyWord = aModule->m_KeyWord;
|
||||
|
||||
// Ensure auxiliary data is up to date
|
||||
CalculateBoundingBox();
|
||||
}
|
||||
|
||||
|
||||
void MODULE::Add( BOARD_ITEM* aBoardItem, bool doAppend )
|
||||
{
|
||||
switch( aBoardItem->Type() )
|
||||
|
||||
Reference in New Issue
Block a user