30#define PNSLOGINFO PNS::DEBUG_DECORATOR::SRC_LOCATION_INFO( __FILE__, __FUNCTION__, __LINE__ ) 
   57    m_router->Sizes().SetTrackWidth( 250000 );
 
 
   68    std::vector<PNS::ITEM*> added, removed, heads;
 
   69    m_router->GetUpdatedItems( removed, added, heads );
 
   72    for( 
auto item : removed )
 
   80    for( 
auto item : added )
 
   87    for( 
auto head : heads )
 
 
   94                                bool aUpdateExpectedResult )
 
  103    int totalEvents = aLog->
Events().size();
 
  107    for( 
auto evt : aLog->
Events() )
 
  109        if( eventIdx < aFrom || ( aTo >= 0 && eventIdx > aTo ) )
 
  115        printf(
"items: %zu\n", items.size() );
 
  116        ITEM* ritem = 
nullptr;
 
  118        if( items.size() && items[0] )
 
  119            ritem = 
m_router->GetWorld()->FindItemByParent( items[0] );
 
  121        int routingLayer = ritem ? ritem->
Layers().
Start() : evt.layer;
 
  125            if( 
ITEM* routerItem = 
m_router->GetWorld()->FindItemByParent( item ) )
 
  126                ritems.
Add( routerItem );
 
  137            m_iface->SetStartLayerFromPNS( routingLayer );
 
  138            m_iface->ImportSizes( sizes, ritem, 
nullptr, evt.p );
 
  144            bool status = 
m_router->StartRouting( evt.p, ritem, routingLayer );
 
  146            msg = wxString::Format( 
"event [%d/%d]: route-start (%d, %d), layer %d, startitem %p status %d", eventIdx,
 
  147                                         totalEvents, evt.p.x, evt.p.y, routingLayer, ritem, status ? 1 : 0 );
 
  159            m_iface->SetStartLayerFromPNS( routingLayer );
 
  160            m_iface->ImportSizes( sizes, ritem, 
nullptr, evt.p );
 
  166            auto msg = wxString::Format( 
"event [%d/%d]: drag-start (%d, %d)", eventIdx,
 
  167                                         totalEvents, evt.p.x, evt.p.y );
 
  172            bool rv = 
m_router->StartDragging( evt.p, ritems, 0 );
 
  180            m_debugDecorator->Message( wxString::Format( 
"fix (%d, %d)", evt.p.x, evt.p.y ) );
 
  181            bool rv = 
m_router->FixRoute( evt.p, ritem, 
false, 
false );
 
  182            printf( 
"  fix -> (%d, %d) ret %d\n", evt.p.x, evt.p.y, rv ? 1 : 0 );
 
  190            m_debugDecorator->Message( wxString::Format( 
"unfix (%d, %d)", evt.p.x, evt.p.y ) );
 
  191            printf( 
"  unfix\n" );
 
  201            auto msg = wxString::Format( 
"event [%d/%d]: move (%d, %d)", eventIdx, totalEvents, evt.p.x, evt.p.y );
 
  206            bool ret = 
m_router->Move( evt.p, ritem );
 
  215             auto msg = wxString::Format( 
"event [%d/%d]: toggle-via", eventIdx, totalEvents );
 
  235            auto traces = 
m_router->Placer()->Traces();
 
  237            for( 
const auto& t : traces.CItems() )
 
  239                const LINE *l  = 
static_cast<LINE*
>(t.item);
 
  240                const auto& sh = l->
CLine();
 
  247            node = 
m_router->Placer()->CurrentNode( 
true );
 
  251            node = 
m_router->GetDragger()->CurrentNode();
 
  260        if( ! added.empty() )
 
  265            for( 
auto t : added )
 
  275    wxASSERT_MSG( 
m_router->Mode() == aLog->
GetMode(), 
"didn't set the router mode correctly?" );
 
  277    if( aUpdateExpectedResult )
 
  279        std::vector<PNS::ITEM*> added, removed, heads;
 
  280        m_router->GetUpdatedItems( removed, added, heads );
 
  282        std::set<KIID> removedKIIDs;
 
  284        for( 
auto item : removed )
 
  290                removedKIIDs.insert( item->Parent()->m_Uuid );
 
  293        std::vector<std::unique_ptr<PNS::ITEM>> myOwnedItems;
 
  297        routerCommitState.
m_heads = heads;
 
  300            myOwnedItems.emplace_back( head );
 
 
  313    printf(
"Comparing %zu added/%zu removed items\n", cstate.m_addedItems.size(), cstate.m_removedIds.size() );
 
 
  353        return static_cast<NETINFO_ITEM*
>( aNet )->GetNetname();
 
  355        return wxEmptyString;
 
 
A base class derived from BOARD_ITEM for items that can be connected and have a net,...
 
Handle the data for a net.
 
static REPORTER & GetInstance()
 
void Add(const LINE &aLine)
 
Base class for PNS router board items.
 
const PNS_LAYER_RANGE & Layers() const
 
virtual ITEM * Clone() const =0
Return a deep copy of the item.
 
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
 
const SHAPE_LINE_CHAIN & CLine() const
 
Keep the router "world" - i.e.
 
std::vector< ITEM * > ITEM_VECTOR
 
void GetUpdatedItems(ITEM_VECTOR &aRemoved, ITEM_VECTOR &aAdded)
Return the list of items removed and added in this branch with respect to the root branch.
 
Contain all persistent settings of the router, such as the mode, optimization effort,...
 
void SetExpectedResult(const COMMIT_STATE &aCommitState, std::vector< std::unique_ptr< PNS::ITEM > > aParsedItems)
 
const COMMIT_STATE & GetExpectedResult() const
 
PNS::ROUTING_SETTINGS * GetRoutingSettings() const
 
PNS::ROUTER_MODE GetMode() const
 
std::vector< PNS::LOGGER::EVENT_ENTRY > & Events()
 
std::shared_ptr< BOARD > GetBoard() const
 
std::vector< BOARD_CONNECTED_ITEM * > ItemsById(const PNS::LOGGER::EVENT_ENTRY &evt)
 
int GetNetCode(PNS::NET_HANDLE aNet) const override
 
PNS_LOG_PLAYER_KICAD_IFACE(PNS_LOG_VIEW_TRACKER *aViewTracker)
 
PNS_LOG_VIEW_TRACKER * m_viewTracker
 
void HideItem(PNS::ITEM *aItem) override
 
void DisplayItem(const PNS::ITEM *aItem, int aClearance, bool aEdit=false, int aFlags=0) override
 
~PNS_LOG_PLAYER_KICAD_IFACE() override
 
wxString GetNetName(PNS::NET_HANDLE aNet) const override
 
PNS_TEST_DEBUG_DECORATOR * m_debugDecorator
 
std::unique_ptr< PNS::ROUTING_SETTINGS > m_routingSettings
 
std::shared_ptr< BOARD > m_board
 
const PNS_LOG_FILE::COMMIT_STATE GetRouterUpdatedItems()
 
bool CompareResults(PNS_LOG_FILE *aLog)
 
std::unique_ptr< PNS::ROUTER > m_router
 
void ReplayLog(PNS_LOG_FILE *aLog, int aStartEventIndex=0, int aFrom=0, int aTo=-1, bool aUpdateExpectedResult=false)
 
std::shared_ptr< PNS_LOG_VIEW_TRACKER > m_viewTracker
 
std::unique_ptr< PNS_LOG_PLAYER_KICAD_IFACE > m_iface
 
void SetReporter(REPORTER *aReporter)
 
std::map< int, VIEW_ENTRIES > m_vitems
 
void DisplayItem(const PNS::ITEM *aItem)
 
void HideItem(PNS::ITEM *aItem)
 
std::vector< ENTRY > VIEW_ENTRIES
 
void SetStage(int aStage)
 
Push and Shove diff pair dimensions (gap) settings dialog.
 
@ RM_Walkaround
Only walk around.
 
std::set< KIID > m_removedIds
 
std::vector< PNS::ITEM * > m_addedItems
 
std::vector< PNS::ITEM * > m_heads
 
std::unique_ptr< const PNS::ITEM > m_ownedItem