diff --git a/pcbnew/connectivity/from_to_cache.cpp b/pcbnew/connectivity/from_to_cache.cpp index 89aca4adf3..bec487523e 100644 --- a/pcbnew/connectivity/from_to_cache.cpp +++ b/pcbnew/connectivity/from_to_cache.cpp @@ -260,9 +260,22 @@ bool FROM_TO_CACHE::IsOnFromToPath( BOARD_CONNECTED_ITEM* aItem, const wxString return false; } + void FROM_TO_CACHE::Rebuild( BOARD* aBoard ) { m_board = aBoard; buildEndpointList(); m_ftPaths.clear(); } + + +FROM_TO_CACHE::FT_PATH* FROM_TO_CACHE::QueryFromToPath( const std::set& aItems ) +{ + for( auto& ftPath : m_ftPaths ) + { + if ( ftPath.pathItems == aItems ) + return &ftPath; + } + + return nullptr; +} \ No newline at end of file diff --git a/pcbnew/connectivity/from_to_cache.h b/pcbnew/connectivity/from_to_cache.h index 031bb5efac..7a5fc30a36 100644 --- a/pcbnew/connectivity/from_to_cache.h +++ b/pcbnew/connectivity/from_to_cache.h @@ -60,6 +60,8 @@ public: void Rebuild( BOARD* aBoard ); bool IsOnFromToPath( BOARD_CONNECTED_ITEM* aItem, const wxString& aFrom, const wxString& aTo ); + FT_PATH* QueryFromToPath( const std::set& aItems ); + private: int cacheFromToPaths( const wxString& aFrom, const wxString& aTo );