88 BOOST_CHECK(
info.isJunction );
89 BOOST_CHECK(
info.hasBusEntry );
92 BOOST_CHECK_MESSAGE(
info.hasBusEntryToMultipleBuses,
93 "A bus forking at a bus-entry root must be a real bus junction "
113 BOOST_CHECK(
info.hasBusEntry );
114 BOOST_CHECK( !
info.hasBusEntryToMultipleBuses );
140 BOOST_CHECK(
info.hasBusEntry );
143 BOOST_CHECK_MESSAGE( !
info.hasBusEntryToMultipleBuses,
144 "Two buses crossing at a bus-entry root must not be treated as a fork "
181 screen->
Append( throughBus,
false );
182 screen->
Append( forkBus,
false );
183 screen->
Append( busEntry,
false );
187 "A bus junction must be allowed adjacent to the bus entry "
191 screen->
Append( junction,
false );
205 BOOST_CHECK_MESSAGE( sgThrough == sgFork,
206 "Forked bus must belong to the same bus subgraph as the through bus "
207 "rather than a NO_NET net (issue #24134)" );
Calculate the connectivity of a schematic and generate netlists.
void SetSchematic(SCHEMATIC *aSchematic)
void Recalculate(const SCH_SHEET_LIST &aSheetList, bool aUnconditional=false, std::function< void(SCH_ITEM *)> *aChangedItemHandler=nullptr, PROGRESS_REPORTER *aProgressReporter=nullptr)
Update the connection graph for the given list of sheets.
CONNECTION_SUBGRAPH * GetSubgraphForItem(SCH_ITEM *aItem) const
A subgraph is a set of items that are electrically connected on a single sheet.
Implement an R-tree for fast spatial and type indexing of schematic items.
void insert(SCH_ITEM *aItem)
Insert an item into the tree.
Holds all the data relating to one schematic.
void Reset()
Initialize this schematic to a blank one, unloading anything existing.
void AddTopLevelSheet(SCH_SHEET *aSheet)
Add a new top-level sheet to the schematic.
SCH_SHEET_LIST BuildSheetListSortedByPageNumbers() const
SCH_SHEET * GetTopLevelSheet(int aIndex=0) const
bool RemoveTopLevelSheet(SCH_SHEET *aSheet)
Remove a top-level sheet from the schematic.
Class for a wire to bus entry.
Segment description base class to describe items which have 2 end points (track, wire,...
void SetEndPoint(const VECTOR2I &aPosition)
void Append(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
bool IsExplicitJunctionNeeded(const VECTOR2I &aPosition) const
Indicate that a junction dot is necessary at the given location, and does not yet exist.
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
void SetScreen(SCH_SCREEN *aScreen)
Set the SCH_SCREEN associated with this sheet to aScreen.
bool LoadProject(const wxString &aFullPath, bool aSetActive=true)
Load a project or sets up a new project with a specified path.
PROJECT & Prj() const
A helper while we are not MDI-capable – return the one and only project.
POINT_INFO AnalyzePoint(const EE_RTREE &aItem, const VECTOR2I &aPosition, bool aBreakCrossings)
Check a tree of items for a confluence at a given point and work out what kind of junction it is,...
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
A selection of information about a point in the schematic that might be eligible for turning into a j...
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_CASE(BusForkAtBusEntryIsJunction)
Junction analysis: a bus fork at a wire-to-bus entry root is a junction that the editor is allowed (a...
static constexpr int BE_SIZE
static SCH_LINE * make_bus(const VECTOR2I &aStart, const VECTOR2I &aEnd)
VECTOR2< int32_t > VECTOR2I