20#ifndef LIBREPCB_CORE_BOARDDESIGNRULECHECKMESSAGES_H
21#define LIBREPCB_CORE_BOARDDESIGNRULECHECKMESSAGES_H
26#include "../../../rulecheck/rulecheckmessage.h"
55 qCritical() <<
"DrcHoleRef: Unknown object type.";
167 const QString& netName,
168 const QVector<Path>& locations);
224 const tl::optional<Uuid>& device,
225 const QVector<Path>& locations)
noexcept;
247 const UnsignedLength& minRadius,
const QVector<Path>& locations)
noexcept;
292 const QVector<Path>& locations)
noexcept;
316 const QVector<Path>& locations)
noexcept;
341 const QVector<Path>& locations)
noexcept;
344 const QVector<Path>& locations)
noexcept;
347 const QVector<Path>& locations)
noexcept;
351 const QVector<Path>& locations)
noexcept;
355 const QVector<Path>& locations)
noexcept;
359 const QVector<Path>& locations)
noexcept;
437 return (*obj1) == (*obj2);
459 const QSet<const Layer*>& layers,
460 const Length& minClearance,
461 const QVector<Path>& locations);
468 static QString
getLayerName(
const QSet<const Layer*>& layers);
489 const QVector<Path>& locations)
noexcept;
493 const QVector<Path>& locations)
noexcept;
497 const QVector<Path>& locations)
noexcept;
500 const QVector<Path>& locations)
noexcept;
504 const QVector<Path>& locations)
noexcept;
508 const QVector<Path>& locations)
noexcept;
512 const QVector<Path>& locations)
noexcept;
537 const QVector<Path>& locations)
noexcept;
562 const QVector<Path>& locations)
noexcept;
566 const QVector<Path>& locations)
noexcept;
570 const QVector<Path>& locations)
noexcept;
574 const QVector<Path>& locations)
noexcept;
579 const QVector<Path>& locations)
noexcept;
584 const QVector<Path>& locations)
noexcept;
591 const Data::Device* zoneDevice)
noexcept;
611 const QVector<Path>& locations);
633 const QVector<Path>& locations)
noexcept;
657 const QVector<Path>& locations)
noexcept;
680 const QVector<Path>& locations)
noexcept;
704 const QVector<Path>& locations)
noexcept;
711 const Data::Device* zoneDevice)
noexcept;
733 const QVector<Path>& locations)
noexcept;
737 const QVector<Path>& locations)
noexcept;
741 const QVector<Path>& locations)
noexcept;
746 const QVector<Path>& locations)
noexcept;
751 const QVector<Path>& locations)
noexcept;
758 const Data::Device* zoneDevice)
noexcept;
780 const QVector<Path>& locations)
noexcept;
784 const QVector<Path>& locations)
noexcept;
806 const QVector<Path>& locations)
noexcept;
813 static QString determineMessage(
const DrcHoleRef& hole,
815 static QString determineDescription(
const DrcHoleRef& hole)
noexcept;
833 const QVector<Path>& locations)
noexcept;
840 static QString determineMessage(
bool plated,
843 static QString determineDescription(
bool plated)
noexcept;
863 const QVector<Path>& locations)
noexcept;
886 const QVector<Path>& locations)
noexcept;
892 static QString determineMessage(
const NonEmptyPath& path)
noexcept;
893 static QString determineDescription(
const NonEmptyPath& path)
noexcept;
912 const QVector<Path>& locations)
noexcept;
918 static QString determineMessage(
const Data::Segment& ns,
919 const Data::Via& via)
noexcept;
920 static QString determineDescription(
const Data::Via& via)
noexcept;
941 const QVector<Path>& locations)
noexcept;
964 const QVector<Path>& locations)
noexcept;
986 const QVector<Path>& locations)
noexcept;
The DrcMsgCopperBoardClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:478
DrcMsgCopperBoardClearanceViolation(const DrcMsgCopperBoardClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:513
DrcMsgCopperBoardClearanceViolation()=delete
virtual ~DrcMsgCopperBoardClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:516
The DrcMsgCopperCopperClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:372
DrcMsgCopperCopperClearanceViolation(const DrcMsgCopperCopperClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:462
DrcMsgCopperCopperClearanceViolation()=delete
static QString getLayerName(const QSet< const Layer * > &layers)
Definition: boarddesignrulecheckmessages.cpp:608
virtual ~DrcMsgCopperCopperClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:465
The DrcMsgCopperHoleClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:526
DrcMsgCopperHoleClearanceViolation(const DrcMsgCopperHoleClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:538
DrcMsgCopperHoleClearanceViolation()=delete
virtual ~DrcMsgCopperHoleClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:541
The DrcMsgCopperInKeepoutZone class.
Definition: boarddesignrulecheckmessages.h:551
void addZoneApprovalNodes(const Data::Zone &zone, const Data::Device *zoneDevice) noexcept
Definition: boarddesignrulecheckmessages.cpp:906
static QString getDescription() noexcept
Definition: boarddesignrulecheckmessages.cpp:917
DrcMsgCopperInKeepoutZone()=delete
DrcMsgCopperInKeepoutZone(const DrcMsgCopperInKeepoutZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:585
virtual ~DrcMsgCopperInKeepoutZone() noexcept
Definition: boarddesignrulecheckmessages.h:587
The DrcMsgDeviceInCourtyard class.
Definition: boarddesignrulecheckmessages.h:647
virtual ~DrcMsgDeviceInCourtyard() noexcept
Definition: boarddesignrulecheckmessages.h:660
DrcMsgDeviceInCourtyard()=delete
DrcMsgDeviceInCourtyard(const DrcMsgDeviceInCourtyard &other) noexcept
Definition: boarddesignrulecheckmessages.h:658
The DrcMsgDeviceInKeepoutZone class.
Definition: boarddesignrulecheckmessages.h:693
DrcMsgDeviceInKeepoutZone()=delete
virtual ~DrcMsgDeviceInKeepoutZone() noexcept
Definition: boarddesignrulecheckmessages.h:707
DrcMsgDeviceInKeepoutZone(const DrcMsgDeviceInKeepoutZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:705
The DrcMsgDisabledLayer class.
Definition: boarddesignrulecheckmessages.h:999
DrcMsgDisabledLayer(const DrcMsgDisabledLayer &other) noexcept
Definition: boarddesignrulecheckmessages.h:1006
virtual ~DrcMsgDisabledLayer() noexcept
Definition: boarddesignrulecheckmessages.h:1008
DrcMsgDisabledLayer()=delete
The DrcMsgDrillBoardClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:625
DrcMsgDrillBoardClearanceViolation()=delete
virtual ~DrcMsgDrillBoardClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:637
DrcMsgDrillBoardClearanceViolation(const DrcMsgDrillBoardClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:634
The DrcMsgDrillDrillClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:602
virtual ~DrcMsgDrillDrillClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:615
DrcMsgDrillDrillClearanceViolation(const DrcMsgDrillDrillClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:612
DrcMsgDrillDrillClearanceViolation()=delete
The DrcMsgEmptyNetSegment class.
Definition: boarddesignrulecheckmessages.h:261
virtual ~DrcMsgEmptyNetSegment() noexcept
Definition: boarddesignrulecheckmessages.h:272
DrcMsgEmptyNetSegment(const DrcMsgEmptyNetSegment &other) noexcept
Definition: boarddesignrulecheckmessages.h:270
DrcMsgEmptyNetSegment()=delete
The DrcMsgExposureInKeepoutZone class.
Definition: boarddesignrulecheckmessages.h:722
DrcMsgExposureInKeepoutZone(const DrcMsgExposureInKeepoutZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:752
virtual ~DrcMsgExposureInKeepoutZone() noexcept
Definition: boarddesignrulecheckmessages.h:754
DrcMsgExposureInKeepoutZone()=delete
The DrcMsgForbiddenSlot class.
Definition: boarddesignrulecheckmessages.h:876
DrcMsgForbiddenSlot()=delete
DrcMsgForbiddenSlot(const DrcMsgForbiddenSlot &other) noexcept
Definition: boarddesignrulecheckmessages.h:887
virtual ~DrcMsgForbiddenSlot() noexcept
Definition: boarddesignrulecheckmessages.h:889
The DrcMsgForbiddenVia class.
Definition: boarddesignrulecheckmessages.h:903
virtual ~DrcMsgForbiddenVia() noexcept
Definition: boarddesignrulecheckmessages.h:915
DrcMsgForbiddenVia(const DrcMsgForbiddenVia &other) noexcept
Definition: boarddesignrulecheckmessages.h:913
DrcMsgForbiddenVia()=delete
The DrcMsgInvalidPadConnection class.
Definition: boarddesignrulecheckmessages.h:853
DrcMsgInvalidPadConnection(const DrcMsgInvalidPadConnection &other) noexcept
Definition: boarddesignrulecheckmessages.h:864
virtual ~DrcMsgInvalidPadConnection() noexcept
Definition: boarddesignrulecheckmessages.h:866
DrcMsgInvalidPadConnection()=delete
The DrcMsgMinimumAnnularRingViolation class.
Definition: boarddesignrulecheckmessages.h:769
virtual ~DrcMsgMinimumAnnularRingViolation() noexcept
Definition: boarddesignrulecheckmessages.h:788
DrcMsgMinimumAnnularRingViolation(const DrcMsgMinimumAnnularRingViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:785
DrcMsgMinimumAnnularRingViolation()=delete
The DrcMsgMinimumBoardOutlineInnerRadiusViolation class.
Definition: boarddesignrulecheckmessages.h:240
DrcMsgMinimumBoardOutlineInnerRadiusViolation(const DrcMsgMinimumBoardOutlineInnerRadiusViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:248
virtual ~DrcMsgMinimumBoardOutlineInnerRadiusViolation() noexcept
Definition: boarddesignrulecheckmessages.h:251
DrcMsgMinimumBoardOutlineInnerRadiusViolation()=delete
The DrcMsgMinimumDrillDiameterViolation class.
Definition: boarddesignrulecheckmessages.h:798
DrcMsgMinimumDrillDiameterViolation()=delete
DrcMsgMinimumDrillDiameterViolation(const DrcMsgMinimumDrillDiameterViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:807
virtual ~DrcMsgMinimumDrillDiameterViolation() noexcept
Definition: boarddesignrulecheckmessages.h:810
The DrcMsgMinimumSlotWidthViolation class.
Definition: boarddesignrulecheckmessages.h:825
virtual ~DrcMsgMinimumSlotWidthViolation() noexcept
Definition: boarddesignrulecheckmessages.h:837
DrcMsgMinimumSlotWidthViolation(const DrcMsgMinimumSlotWidthViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:834
DrcMsgMinimumSlotWidthViolation()=delete
The DrcMsgMinimumTextHeightViolation class.
Definition: boarddesignrulecheckmessages.h:305
DrcMsgMinimumTextHeightViolation(const DrcMsgMinimumTextHeightViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:317
virtual ~DrcMsgMinimumTextHeightViolation() noexcept
Definition: boarddesignrulecheckmessages.h:320
DrcMsgMinimumTextHeightViolation()=delete
The DrcMsgMinimumWidthViolation class.
Definition: boarddesignrulecheckmessages.h:330
virtual ~DrcMsgMinimumWidthViolation() noexcept
Definition: boarddesignrulecheckmessages.h:362
DrcMsgMinimumWidthViolation(const DrcMsgMinimumWidthViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:360
DrcMsgMinimumWidthViolation()=delete
The DrcMsgMissingBoardOutline class.
Definition: boarddesignrulecheckmessages.h:181
DrcMsgMissingBoardOutline() noexcept
Definition: boarddesignrulecheckmessages.cpp:195
virtual ~DrcMsgMissingBoardOutline() noexcept
Definition: boarddesignrulecheckmessages.h:189
DrcMsgMissingBoardOutline(const DrcMsgMissingBoardOutline &other) noexcept
Definition: boarddesignrulecheckmessages.h:187
The DrcMsgMissingConnection class.
Definition: boarddesignrulecheckmessages.h:125
DrcMsgMissingConnection(const DrcMsgMissingConnection &other) noexcept
Definition: boarddesignrulecheckmessages.h:169
DrcMsgMissingConnection()=delete
virtual ~DrcMsgMissingConnection() noexcept
Definition: boarddesignrulecheckmessages.h:171
The DrcMsgMissingDevice class.
Definition: boarddesignrulecheckmessages.h:106
DrcMsgMissingDevice()=delete
DrcMsgMissingDevice(const DrcMsgMissingDevice &other) noexcept
Definition: boarddesignrulecheckmessages.h:113
virtual ~DrcMsgMissingDevice() noexcept
Definition: boarddesignrulecheckmessages.h:115
The DrcMsgMultipleBoardOutlines class.
Definition: boarddesignrulecheckmessages.h:199
virtual ~DrcMsgMultipleBoardOutlines() noexcept
Definition: boarddesignrulecheckmessages.h:207
DrcMsgMultipleBoardOutlines(const QVector< Path > &locations) noexcept
Definition: boarddesignrulecheckmessages.cpp:210
DrcMsgMultipleBoardOutlines(const DrcMsgMultipleBoardOutlines &other) noexcept
Definition: boarddesignrulecheckmessages.h:205
The DrcMsgOpenBoardOutlinePolygon class.
Definition: boarddesignrulecheckmessages.h:217
DrcMsgOpenBoardOutlinePolygon(const DrcMsgOpenBoardOutlinePolygon &other) noexcept
Definition: boarddesignrulecheckmessages.h:226
virtual ~DrcMsgOpenBoardOutlinePolygon() noexcept
Definition: boarddesignrulecheckmessages.h:229
DrcMsgOpenBoardOutlinePolygon()=delete
The DrcMsgOverlappingDevices class.
Definition: boarddesignrulecheckmessages.h:670
DrcMsgOverlappingDevices()=delete
virtual ~DrcMsgOverlappingDevices() noexcept
Definition: boarddesignrulecheckmessages.h:683
DrcMsgOverlappingDevices(const DrcMsgOverlappingDevices &other) noexcept
Definition: boarddesignrulecheckmessages.h:681
The DrcMsgSilkscreenClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:930
DrcMsgSilkscreenClearanceViolation()=delete
DrcMsgSilkscreenClearanceViolation(const DrcMsgSilkscreenClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:942
virtual ~DrcMsgSilkscreenClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:945
The DrcMsgUnconnectedJunction class.
Definition: boarddesignrulecheckmessages.h:282
virtual ~DrcMsgUnconnectedJunction() noexcept
Definition: boarddesignrulecheckmessages.h:295
DrcMsgUnconnectedJunction()=delete
DrcMsgUnconnectedJunction(const DrcMsgUnconnectedJunction &other) noexcept
Definition: boarddesignrulecheckmessages.h:293
The DrcMsgUnusedLayer class.
Definition: boarddesignrulecheckmessages.h:1018
DrcMsgUnusedLayer(const DrcMsgUnusedLayer &other) noexcept
Definition: boarddesignrulecheckmessages.h:1025
virtual ~DrcMsgUnusedLayer() noexcept
Definition: boarddesignrulecheckmessages.h:1027
DrcMsgUnusedLayer()=delete
The DrcMsgUselessVia class.
Definition: boarddesignrulecheckmessages.h:977
virtual ~DrcMsgUselessVia() noexcept
Definition: boarddesignrulecheckmessages.h:989
DrcMsgUselessVia()=delete
DrcMsgUselessVia(const DrcMsgUselessVia &other) noexcept
Definition: boarddesignrulecheckmessages.h:987
The DrcMsgUselessZone class.
Definition: boarddesignrulecheckmessages.h:955
DrcMsgUselessZone()=delete
DrcMsgUselessZone(const DrcMsgUselessZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:965
virtual ~DrcMsgUselessZone() noexcept
Definition: boarddesignrulecheckmessages.h:967
The Layer class provides all supported geometry layers.
Definition: layer.h:42
The Length class is used to represent a length (for example 12.75 millimeters)
Definition: length.h:83
The RuleCheckMessage class.
Definition: rulecheckmessage.h:45
RuleCheckMessage()=delete
The SExpression class.
Definition: sexpression.h:69
static std::unique_ptr< SExpression > createList(const QString &name)
Definition: sexpression.cpp:399
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition: uuid.h:58
Definition: occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition: length.h:812
type_safe::constrained_type< Path, NonEmptyPathConstraint, NonEmptyPathVerifier > NonEmptyPath
Definition: path.h:222
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition: length.h:696
Definition: boarddesignrulecheckdata.h:111
Definition: boarddesignrulecheckdata.h:155
Definition: boarddesignrulecheckdata.h:129
PositiveLength diameter
Definition: boarddesignrulecheckdata.h:131
Definition: boarddesignrulecheckdata.h:49
Definition: boarddesignrulecheckdata.h:142
QString netName
Definition: boarddesignrulecheckdata.h:153
Definition: boarddesignrulecheckdata.h:95
Definition: boarddesignrulecheckdata.h:104
Definition: boarddesignrulecheckdata.h:74
QString netName
Definition: boarddesignrulecheckdata.h:77
Definition: boarddesignrulecheckdata.h:119
Definition: boarddesignrulecheckdata.h:54
Definition: boarddesignrulecheckdata.h:61
PositiveLength drillDiameter
Definition: boarddesignrulecheckdata.h:65
Definition: boarddesignrulecheckdata.h:135
Input data structure for librepcb::BoardDesignRuleCheck.
Definition: boarddesignrulecheckdata.h:48
Definition: boarddesignrulecheckmessages.h:40
static DrcHoleRef via(const Data::Segment &segment, const Data::Via &via)
Definition: boarddesignrulecheckmessages.h:82
QString mNetName
Definition: boarddesignrulecheckmessages.h:96
bool isPadHole() const noexcept
Definition: boarddesignrulecheckmessages.h:43
static DrcHoleRef padHole(const Data::Device &device, const Data::Pad &pad, const Data::Hole &hole)
Definition: boarddesignrulecheckmessages.h:73
const QString & getNetName() const noexcept
Definition: boarddesignrulecheckmessages.h:46
static DrcHoleRef boardHole(const Data::Hole &hole)
Definition: boarddesignrulecheckmessages.h:61
const Data::Hole * mHole
Definition: boarddesignrulecheckmessages.h:91
const Data::Pad * getPad() const noexcept
Definition: boarddesignrulecheckmessages.h:47
PositiveLength getDiameter() const noexcept
Definition: boarddesignrulecheckmessages.h:48
void serialize(SExpression &node) const
Definition: boarddesignrulecheckmessages.cpp:73
static DrcHoleRef deviceHole(const Data::Device &device, const Data::Hole &hole)
Definition: boarddesignrulecheckmessages.h:66
const Data::Via * mVia
Definition: boarddesignrulecheckmessages.h:93
const Data::Pad * mPad
Definition: boarddesignrulecheckmessages.h:95
const Data::Device * mDevice
Definition: boarddesignrulecheckmessages.h:94
bool isPlated() const noexcept
Definition: boarddesignrulecheckmessages.h:45
const Data::Segment * mSegment
Definition: boarddesignrulecheckmessages.h:92
bool isViaHole() const noexcept
Definition: boarddesignrulecheckmessages.h:44
Definition: boarddesignrulecheckmessages.h:378
static Object pad(const Data::Pad &pad, const Data::Device &device)
Definition: boarddesignrulecheckmessages.h:382
bool operator==(const Object &rhs) const
Definition: boarddesignrulecheckmessages.h:432
QString mNetName
Definition: boarddesignrulecheckmessages.h:453
const Data::Plane * mPlane
Definition: boarddesignrulecheckmessages.h:445
static Object plane(const Data::Plane &plane)
Definition: boarddesignrulecheckmessages.h:404
const Data::Polygon * mPolygon
Definition: boarddesignrulecheckmessages.h:446
static Object polygon(const Data::Polygon &polygon, const Data::Device *device)
Definition: boarddesignrulecheckmessages.h:410
const Data::StrokeText * mStrokeText
Definition: boarddesignrulecheckmessages.h:448
static Object via(const Data::Via &via, const Data::Segment &segment)
Definition: boarddesignrulecheckmessages.h:397
const Data::Circle * mCircle
Definition: boarddesignrulecheckmessages.h:447
QString getName() const
Definition: boarddesignrulecheckmessages.cpp:491
void serialize(SExpression &node) const
Definition: boarddesignrulecheckmessages.cpp:520
static Object strokeText(const Data::StrokeText &txt, const Data::Device *device)
Definition: boarddesignrulecheckmessages.h:424
const Data::Trace * mTrace
Definition: boarddesignrulecheckmessages.h:443
static Object circle(const Data::Circle &circle, const Data::Device *device)
Definition: boarddesignrulecheckmessages.h:417
const Data::Via * mVia
Definition: boarddesignrulecheckmessages.h:444
const Data::Pad * mPad
Definition: boarddesignrulecheckmessages.h:442
const Data::Device * mDevice
Definition: boarddesignrulecheckmessages.h:452
static Object trace(const Data::Trace &trace, const Data::Segment &segment)
Definition: boarddesignrulecheckmessages.h:389
const Data::Segment * mSegment
Definition: boarddesignrulecheckmessages.h:451
Definition: boarddesignrulecheckmessages.h:130
QString getName() const
Definition: boarddesignrulecheckmessages.cpp:123
static Anchor junction(const Data::Segment &segment, const Data::Junction &junction)
Definition: boarddesignrulecheckmessages.h:140
void serialize(SExpression &node) const
Definition: boarddesignrulecheckmessages.cpp:141
const Data::Via * mVia
Definition: boarddesignrulecheckmessages.h:161
const Data::Junction * mJunction
Definition: boarddesignrulecheckmessages.h:160
const Data::Pad * mPad
Definition: boarddesignrulecheckmessages.h:157
static Anchor pad(const Data::Device &device, const Data::Pad &pad)
Definition: boarddesignrulecheckmessages.h:134
static Anchor via(const Data::Segment &segment, const Data::Via &via)
Definition: boarddesignrulecheckmessages.h:147
const Data::Device * mDevice
Definition: boarddesignrulecheckmessages.h:156
const Data::Segment * mSegment
Definition: boarddesignrulecheckmessages.h:159