20#ifndef LIBREPCB_CORE_NETLINE_H
21#define LIBREPCB_CORE_NETLINE_H
26#include "../serialization/serializableobjectlist.h"
27#include "../types/length.h"
61 return (
symbol == rhs.symbol) && (
pin == rhs.pin);
78 const std::optional<PinAnchor>&
tryGetPin() const noexcept {
return mPin; }
92 return !(*
this == rhs);
105 const std::optional<BusAnchor> bus,
106 const std::optional<PinAnchor>&
pin)
noexcept;
129 Q_DECLARE_TR_FUNCTIONS(
NetLine)
191 static constexpr const char*
tagname =
"line";
201 std::size_t seed = 0) noexcept {
204 s += anchor->toStr();
206 if (std::optional<NetLineAnchor::BusAnchor> anchor =
208 s += anchor->segment.toStr();
209 s += anchor->junction.toStr();
211 if (std::optional<NetLineAnchor::PinAnchor> anchor = key.
tryGetPin()) {
212 s += anchor->symbol.toStr();
213 s += anchor->pin.toStr();
215 Q_ASSERT(!s.isEmpty());
217 return ::qHash(s, seed);
The NetLineAnchor class.
Definition netline.h:43
static NetLineAnchor busJunction(const Uuid &segment, const Uuid &junction) noexcept
Definition netline.cpp:126
bool operator!=(const NetLineAnchor &rhs) const noexcept
Definition netline.h:91
NetLineAnchor & operator=(const NetLineAnchor &rhs) noexcept
Definition netline.cpp:115
static NetLineAnchor pin(const Uuid &symbol, const Uuid &pin) noexcept
Definition netline.cpp:132
~NetLineAnchor() noexcept
Definition netline.cpp:64
bool operator<(const NetLineAnchor &rhs) const noexcept
Definition netline.cpp:86
std::optional< Uuid > mJunction
Definition netline.h:109
const std::optional< PinAnchor > & tryGetPin() const noexcept
Definition netline.h:78
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition netline.cpp:67
bool operator==(const NetLineAnchor &rhs) const noexcept
Definition netline.cpp:81
std::optional< PinAnchor > mPin
Definition netline.h:111
const std::optional< Uuid > & tryGetJunction() const noexcept
Definition netline.h:72
static NetLineAnchor junction(const Uuid &junction) noexcept
Definition netline.cpp:122
const std::optional< BusAnchor > & tryGetBusJunction() const noexcept
Definition netline.h:75
std::optional< BusAnchor > mBusJunction
Definition netline.h:110
The NetLine class represents a net line within a schematic.
Definition netline.h:128
~NetLine() noexcept
Definition netline.cpp:168
Signal< NetLine, Event > onEdited
Definition netline.h:138
bool operator==(const NetLine &rhs) const noexcept
Definition netline.cpp:225
bool setWidth(const UnsignedLength &width) noexcept
Definition netline.cpp:185
const NetLineAnchor & getP1() const noexcept
Definition netline.h:153
Uuid mUuid
Definition netline.h:180
bool operator!=(const NetLine &rhs) const noexcept
Definition netline.h:172
Event
Definition netline.h:133
bool setAnchors(NetLineAnchor a, NetLineAnchor b) noexcept
Definition netline.cpp:195
NetLine & operator=(const NetLine &rhs) noexcept
Definition netline.cpp:233
UnsignedLength mWidth
Definition netline.h:181
const UnsignedLength & getWidth() const noexcept
Definition netline.h:152
Slot< NetLine, Event > OnEditedSlot
Definition netline.h:139
static void normalizeAnchors(NetLineAnchor &start, NetLineAnchor &end) noexcept
Definition netline.cpp:244
const NetLineAnchor & getP2() const noexcept
Definition netline.h:154
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition netline.cpp:211
const Uuid & getUuid() const noexcept
Definition netline.h:151
NetLineAnchor mP2
Definition netline.h:183
bool setUuid(const Uuid &uuid) noexcept
Definition netline.cpp:175
NetLineAnchor mP1
Definition netline.h:182
The SExpression class.
Definition sexpression.h:69
The Signal class is used to emit signals on non-QObject derived classes.
Definition signalslot.h:65
The Slot class is used to receive signals from non-QObject derived classes.
Definition signalslot.h:170
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
Definition occmodel.cpp:77
std::size_t qHash(const AttributeKey &key, std::size_t seed=0) noexcept
Definition attributekey.h:113
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition length.h:694
Uuid junction
Definition netline.h:50
bool operator==(const BusAnchor &rhs) const noexcept
Definition netline.h:52
Uuid segment
Definition netline.h:49
Uuid pin
Definition netline.h:58
Uuid symbol
Definition netline.h:57
bool operator==(const PinAnchor &rhs) const noexcept
Definition netline.h:60
static constexpr const char * tagname
Definition netline.h:191