fixed the SCH_COMPONENT copy constructor, make GenCopy() inline
This commit is contained in:
parent
84609e62ab
commit
b28d1ea418
|
@ -60,6 +60,26 @@ SCH_COMPONENT::SCH_COMPONENT( const wxPoint& aPos, SCH_ITEM* aParent ) :
|
|||
m_PrefixString = wxString( _( "U" ) );
|
||||
}
|
||||
|
||||
|
||||
SCH_COMPONENT::SCH_COMPONENT( const SCH_COMPONENT& aTemplate ) :
|
||||
SCH_ITEM( NULL, TYPE_SCH_COMPONENT )
|
||||
{
|
||||
// assignment of all fields, including field vector elements, and linked list pointers
|
||||
*this = aTemplate;
|
||||
|
||||
// set linked list pointers to null, before this they were copies of aTemplate's
|
||||
Pback = NULL;
|
||||
Pnext = NULL;
|
||||
m_Son = NULL;
|
||||
|
||||
// Re-parent the fields, which before this were aTemplate's parent
|
||||
for( int i=0; i<GetFieldCount(); ++i )
|
||||
{
|
||||
GetField( i )->m_Parent = this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function AddHierarchicalReference
|
||||
* adds a full hierachical reference (path + local reference)
|
||||
|
@ -401,7 +421,7 @@ void SCH_COMPONENT::SwapData( SCH_COMPONENT* copyitem )
|
|||
m_Fields.swap( copyitem->m_Fields ); // std::vector's swap()
|
||||
|
||||
// Reparent items after copying data
|
||||
// (after swap(), m_Parent member does not points the right parent):
|
||||
// (after swap(), m_Parent member does not point to the right parent):
|
||||
for( int ii = 0; ii < copyitem->GetFieldCount(); ++ii )
|
||||
{
|
||||
copyitem->GetField(ii)->m_Parent = copyitem;
|
||||
|
@ -502,22 +522,6 @@ void SCH_COMPONENT::ClearAnnotation( DrawSheetPath* aSheet )
|
|||
}
|
||||
|
||||
|
||||
/**************************************************************/
|
||||
SCH_COMPONENT* SCH_COMPONENT::GenCopy()
|
||||
/**************************************************************/
|
||||
{
|
||||
SCH_COMPONENT* new_item = new SCH_COMPONENT( *this );
|
||||
// Reset chain pointers:
|
||||
new_item->Pback = new_item->Pnext = new_item->m_Son = NULL;
|
||||
// Reparent items after copy:
|
||||
for( int ii = 0; ii < new_item->GetFieldCount(); ++ii )
|
||||
{
|
||||
new_item->GetField(ii)->m_Parent = new_item;
|
||||
}
|
||||
return new_item;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************/
|
||||
void SCH_COMPONENT::SetRotationMiroir( int type_rotate )
|
||||
/******************************************************************/
|
||||
|
|
|
@ -98,6 +98,16 @@ private:
|
|||
|
||||
public:
|
||||
SCH_COMPONENT( const wxPoint& pos = wxPoint( 0, 0 ), SCH_ITEM* aParent = NULL );
|
||||
|
||||
/**
|
||||
* Copy Constructor
|
||||
* clones \a aTemplate into this object. All fields are copied as is except
|
||||
* for the linked list management pointers which are set to NULL, and the
|
||||
* SCH_CMP_FIELD's m_Parent pointers which are set to the new parent,
|
||||
* i.e. this new object.
|
||||
*/
|
||||
SCH_COMPONENT( const SCH_COMPONENT& aTemplate );
|
||||
|
||||
~SCH_COMPONENT() { }
|
||||
|
||||
virtual wxString GetClass() const
|
||||
|
@ -125,7 +135,17 @@ public:
|
|||
void Load( FILE* aFile ) throw( Error );
|
||||
*/
|
||||
|
||||
SCH_COMPONENT* GenCopy();
|
||||
/**
|
||||
* Function GenCopy
|
||||
* returns a copy of this object but with the linked list pointers
|
||||
* set to NULL.
|
||||
* @return SCH_COMPONENT* - a copy of me.
|
||||
*/
|
||||
SCH_COMPONENT* GenCopy()
|
||||
{
|
||||
return new SCH_COMPONENT( *this );
|
||||
}
|
||||
|
||||
void SetRotationMiroir( int type );
|
||||
int GetRotationMiroir();
|
||||
wxPoint GetScreenCoord( const wxPoint& coord );
|
||||
|
|
Loading…
Reference in New Issue