pcbnew: remove the last dlist components from pcbnew

This commit is contained in:
Seth Hillbrand 2019-06-02 19:50:26 -07:00
parent 6ddc2fe02d
commit 1f30d0c803
9 changed files with 1 additions and 109 deletions

View File

@ -1,77 +0,0 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 NBEE Embedded Systems, Miguel Angel Ajo <miguelangel@nbee.es>
* Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* DLIST python iteration code, to allow standard iteration over DLIST */
%include <dlist.h>
%{
#include <dlist.h>
%}
%extend DLIST
{
%pythoncode
%{
class DLISTIter:
def __init__(self,aList):
self.last = aList # last item is the start of list
def next(self): # get the next item, Python 2 way to implement an iterator
return self.__next__()
def __next__(self): # get the next item
item = self.last
try:
item = item.Get()
except:
pass
if item is None: # if the item is None, then finish the iteration
raise StopIteration
else:
ret = None
# first item in list has "Get" as a DLIST
try:
ret = self.last.Get()
except:
ret = self.last # next items do not..
self.last = self.last.Next()
# when the iterated object can be casted down in inheritance, just do it..
if 'Cast' in dir(ret):
ret = ret.Cast()
return ret
def __iter__(self):
return self.DLISTIter(self)
%}
}

View File

@ -76,8 +76,6 @@ principle should be easily implemented by adapting the current STL containers.
%ignore operator <<;
%ignore operator=;
%include dlist.i
// headers/imports that must be included in the _wrapper.cpp at top
%{

View File

@ -114,8 +114,6 @@ public:
*/
static wxPoint ZeroOffset;
BOARD_ITEM* Next() const { return static_cast<BOARD_ITEM*>( Pnext ); }
BOARD_ITEM* Back() const { return static_cast<BOARD_ITEM*>( Pback ); }
BOARD_ITEM_CONTAINER* GetParent() const { return (BOARD_ITEM_CONTAINER*) m_Parent; }
/**

View File

@ -32,10 +32,7 @@
%include class_board_item.h // generate code for this interface
// this is to help python with the * accessor of DLIST templates
%rename(Get) operator BOARD_ITEM*;
%template(BOARD_ITEM_List) DLIST<BOARD_ITEM>;
%{
#include <class_board_item.h>
@ -138,7 +135,7 @@ static PCB_TARGET* Cast_to_PCB_TARGET( BOARD_ITEM* );
elif ct=="ZONE_CONTAINER":
return Cast_to_ZONE_CONTAINER(self)
else:
return None
return none
def Duplicate(self):
ct = self.GetClass()

View File

@ -35,7 +35,6 @@
%feature("flatnested", "");
%rename(Get) operator MODULE*;
%template(MODULE_List) DLIST<MODULE>;
%{
#include <class_module.h>
%}

View File

@ -3,7 +3,6 @@
%include class_pad.h
%rename(Get) operator D_PAD*;
%template(PAD_List) DLIST<D_PAD>;
%{
#include <class_pad.h>
%}

View File

@ -2,7 +2,6 @@
%include class_track.h
%rename(Get) operator TRACK*;
%template(TRACK_List) DLIST<TRACK>;
%{
#include <class_track.h>
%}

View File

@ -764,21 +764,6 @@ int PCBNEW_CONTROL::AppendBoardFromFile( const TOOL_EVENT& aEvent )
}
// Helper function for PCBNEW_CONTROL::placeBoardItems()
template<typename T>
static void moveNoFlagToVector( DLIST<T>& aList, std::vector<BOARD_ITEM*>& aTarget, bool aIsNew )
{
for( auto obj = aIsNew ? aList.PopFront() : aList.GetFirst(); obj;
obj = aIsNew ? aList.PopFront() : obj->Next() )
{
if( obj->GetFlags() & FLAG0 )
obj->ClearFlags( FLAG0 );
else
aTarget.push_back( obj );
}
}
// Helper function for PCBNEW_CONTROL::placeBoardItems()
template<typename T>
static void moveNoFlagToVector( std::deque<T>& aList, std::vector<BOARD_ITEM*>& aTarget, bool aIsNew )

View File

@ -169,18 +169,12 @@ static void SwapItemData( BOARD_ITEM* aItem, BOARD_ITEM* aImage )
// mainly pointers in chain and time stamp, which is set to new, unique value.
// So we have to use the current values of these parameters.
EDA_ITEM* pnext = aItem->Next();
EDA_ITEM* pback = aItem->Back();
DHEAD* mylist = aItem->GetList();
timestamp_t timestamp = aItem->GetTimeStamp();
EDA_ITEM* parent = aItem->GetParent();
aItem->SwapData( aImage );
// Restore pointers and time stamp, to be sure they are not broken
aItem->SetNext( pnext );
aItem->SetBack( pback );
aItem->SetList( mylist );
aItem->SetTimeStamp( timestamp );
aItem->SetParent( parent );
}