KiCad PCB EDA Suite
|
#include <algorithm>
#include <cstdio>
#include <memory>
#include <mutex>
#include <wx/log.h>
#include <board.h>
#include <board_design_settings.h>
#include <component_classes/component_class.h>
#include <drc/drc_rtree.h>
#include <drc/drc_engine.h>
#include <lset.h>
#include <pcb_track.h>
#include <pcb_group.h>
#include <geometry/shape_segment.h>
#include <pcbexpr_evaluator.h>
#include <connectivity/connectivity_data.h>
#include <connectivity/connectivity_algo.h>
#include <connectivity/from_to_cache.h>
Go to the source code of this file.
Classes | |
class | SCOPED_LAYERSET |
Macros | |
#define | MISSING_LAYER_ARG(f) |
#define | MISSING_FP_ARG(f) |
#define | MISSING_AREA_ARG(f) |
#define | MISSING_GROUP_ARG(f) |
#define | MISSING_SHEET_ARG(f) |
#define | MISSING_REF_ARG(f) |
#define | MISSING_DP_ARG(f) |
Functions | |
bool | fromToFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | existsOnLayerFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | isPlatedFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
bool | collidesWithCourtyard (BOARD_ITEM *aItem, std::shared_ptr< SHAPE > &aItemShape, PCBEXPR_CONTEXT *aCtx, FOOTPRINT *aFootprint, PCB_LAYER_ID aSide) |
static bool | testFootprintSelector (FOOTPRINT *aFp, const wxString &aSelector) |
static bool | searchFootprints (BOARD *aBoard, const wxString &aArg, PCBEXPR_CONTEXT *aCtx, const std::function< bool(FOOTPRINT *)> &aFunc) |
static void | intersectsCourtyardFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | intersectsFrontCourtyardFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | intersectsBackCourtyardFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
bool | collidesWithArea (BOARD_ITEM *aItem, PCB_LAYER_ID aLayer, PCBEXPR_CONTEXT *aCtx, ZONE *aArea) |
bool | searchAreas (BOARD *aBoard, const wxString &aArg, PCBEXPR_CONTEXT *aCtx, const std::function< bool(ZONE *)> &aFunc) |
static void | intersectsAreaFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | enclosedByAreaFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | memberOfGroupFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | memberOfSheetFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | memberOfSheetOrChildrenFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | memberOfFootprintFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | isMicroVia (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | isBlindBuriedViaFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | isCoupledDiffPairFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | inDiffPairFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | getFieldFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | hasNetclassFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | hasExactNetclassFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
static void | hasComponentClassFunc (LIBEVAL::CONTEXT *aCtx, void *self) |
#define MISSING_AREA_ARG | ( | f | ) |
Definition at line 666 of file pcbexpr_functions.cpp.
Referenced by enclosedByAreaFunc(), and intersectsAreaFunc().
#define MISSING_DP_ARG | ( | f | ) |
Definition at line 1166 of file pcbexpr_functions.cpp.
Referenced by inDiffPairFunc().
#define MISSING_FP_ARG | ( | f | ) |
Definition at line 272 of file pcbexpr_functions.cpp.
Referenced by intersectsBackCourtyardFunc(), intersectsCourtyardFunc(), and intersectsFrontCourtyardFunc().
#define MISSING_GROUP_ARG | ( | f | ) |
Definition at line 881 of file pcbexpr_functions.cpp.
Referenced by memberOfGroupFunc().
#define MISSING_LAYER_ARG | ( | f | ) |
Definition at line 76 of file pcbexpr_functions.cpp.
Referenced by existsOnLayerFunc().
#define MISSING_REF_ARG | ( | f | ) |
Definition at line 1048 of file pcbexpr_functions.cpp.
Referenced by memberOfFootprintFunc().
#define MISSING_SHEET_ARG | ( | f | ) |
Definition at line 927 of file pcbexpr_functions.cpp.
Referenced by memberOfSheetFunc(), and memberOfSheetOrChildrenFunc().
bool collidesWithArea | ( | BOARD_ITEM * | aItem, |
PCB_LAYER_ID | aLayer, | ||
PCBEXPR_CONTEXT * | aCtx, | ||
ZONE * | aArea ) |
Avoid buried vias that don't overlap the zone's layers
Definition at line 469 of file pcbexpr_functions.cpp.
References _, ALLOW_ACUTE_CORNERS, ARC_LOW_DEF, B_CrtYd, LSET::BackMask(), SHAPE_POLY_SET::ClearArcs(), SHAPE_POLY_SET::CloneDropTriangulation(), SHAPE_POLY_SET::Collide(), LSET::Contains(), SHAPE_POLY_SET::Deflate(), F_CrtYd, LSET::FrontMask(), BOARD_ITEM::GetBoard(), ZONE::GetBoundingBox(), FOOTPRINT::GetCourtyard(), BOARD::GetDesignSettings(), BOARD_DESIGN_SETTINGS::GetDRCEpsilon(), BOARD_ITEM::GetEffectiveHoleShape(), BOARD_ITEM::GetEffectiveShape(), EDA_ITEM::GetFlags(), PCBEXPR_CONTEXT::GetLayer(), BOARD_ITEM::GetLayerSet(), ZONE::GetLayerSet(), LIBEVAL::CONTEXT::HasErrorCallback(), HOLE_PROXY, ZONE::IsFilled(), BOARD::m_CopperZoneRTreeCache, MALFORMED_COURTYARDS, SHAPE_POLY_SET::Outline(), ZONE::Outline(), SHAPE_POLY_SET::OutlineCount(), PCB_FOOTPRINT_T, PCB_PAD_T, PCB_VIA_T, PCB_ZONE_T, DRC_RTREE::QueryColliding(), LIBEVAL::CONTEXT::ReportError(), EDA_ITEM::Type(), and UNDEFINED_LAYER.
Referenced by intersectsAreaFunc().
bool collidesWithCourtyard | ( | BOARD_ITEM * | aItem, |
std::shared_ptr< SHAPE > & | aItemShape, | ||
PCBEXPR_CONTEXT * | aCtx, | ||
FOOTPRINT * | aFootprint, | ||
PCB_LAYER_ID | aSide ) |
Definition at line 192 of file pcbexpr_functions.cpp.
References SHAPE_POLY_SET::Collide(), FOOTPRINT::GetCourtyard(), BOARD_ITEM::GetEffectiveShape(), and PCBEXPR_CONTEXT::GetLayer().
Referenced by intersectsBackCourtyardFunc(), intersectsCourtyardFunc(), and intersectsFrontCourtyardFunc().
|
static |
Definition at line 769 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), ERROR_OUTSIDE, BOARD_ITEM::GetBoard(), EDA_ITEM::GetBoundingBox(), ZONE::GetBoundingBox(), BOARD::GetDesignSettings(), EDA_ITEM::GetFlags(), PCBEXPR_CONTEXT::GetLayer(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), BOX2< Vec >::Intersects(), BOARD_DESIGN_SETTINGS::m_MaxError, MISSING_AREA_ARG, PCB_FOOTPRINT_T, PCB_ZONE_T, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, ROUTER_TRANSIENT, searchAreas(), BOARD_ITEM::TransformShapeToPolygon(), and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 78 of file pcbexpr_functions.cpp.
References _, LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), BOARD_ITEM::GetBoard(), BOARD_ITEM::GetLayerSet(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), ENUM_MAP< T >::Instance(), BOARD_ITEM::IsOnLayer(), BOARD::m_CachesMutex, BOARD::m_LayerExpressionCache, MISSING_LAYER_ARG, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, BASE_SET::set(), and ToLAYER_ID().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
bool fromToFunc | ( | LIBEVAL::CONTEXT * | aCtx, |
void * | self ) |
Definition at line 44 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), BOARD_ITEM::GetBoard(), BOARD::GetConnectivity(), CONNECTIVITY_DATA::GetFromToCache(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), and result.
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1220 of file pcbexpr_functions.cpp.
References _, LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), BOARD_ITEM::GetBoard(), FOOTPRINT::GetField(), PCBEXPR_VAR_REF::GetObject(), EDA_TEXT::GetText(), LIBEVAL::CONTEXT::HasErrorCallback(), PCB_FOOTPRINT_T, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1340 of file pcbexpr_functions.cpp.
References _, LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), COMPONENT_CLASS::ContainsClassName(), FOOTPRINT::GetComponentClass(), PCBEXPR_VAR_REF::GetObject(), BOARD_ITEM::GetParentFootprint(), LIBEVAL::CONTEXT::HasErrorCallback(), PCB_FOOTPRINT_T, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1301 of file pcbexpr_functions.cpp.
References _, LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), BOARD_CONNECTED_ITEM::GetEffectiveNetClass(), NETCLASS::GetName(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), BOARD_ITEM::IsConnected(), LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), and result.
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1262 of file pcbexpr_functions.cpp.
References _, LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), NETCLASS::ContainsNetclassWithName(), BOARD_CONNECTED_ITEM::GetEffectiveNetClass(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), BOARD_ITEM::IsConnected(), LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), and result.
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1169 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), BOARD::FindNet(), BOARD_ITEM::GetBoard(), NETINFO_ITEM::GetNetname(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), BOARD_ITEM::IsConnected(), DRC_ENGINE::MatchDpSuffix(), MISSING_DP_ARG, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), and result.
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 669 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), collidesWithArea(), BOARD_ITEM::GetBoard(), EDA_ITEM::GetBoundingBox(), ZONE::GetBoundingBox(), EDA_ITEM::GetFlags(), PCBEXPR_CONTEXT::GetLayer(), BOARD_ITEM::GetLayerSet(), ZONE::GetLayerSet(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), BOX2< Vec >::Intersects(), MISSING_AREA_ARG, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, ROUTER_TRANSIENT, searchAreas(), BASE_SET::set(), and UNDEFINED_LAYER.
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 404 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), B_Cu, collidesWithCourtyard(), F_Cu, BOARD_ITEM::GetBoard(), EDA_ITEM::GetFlags(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), FOOTPRINT::IsFlipped(), MISSING_FP_ARG, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), res, result, ROUTER_TRANSIENT, and searchFootprints().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 275 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), B_Cu, collidesWithCourtyard(), F_Cu, BOARD_ITEM::GetBoard(), EDA_ITEM::GetFlags(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), MISSING_FP_ARG, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), res, result, ROUTER_TRANSIENT, and searchFootprints().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 339 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), B_Cu, collidesWithCourtyard(), F_Cu, BOARD_ITEM::GetBoard(), EDA_ITEM::GetFlags(), PCBEXPR_VAR_REF::GetObject(), LIBEVAL::CONTEXT::HasErrorCallback(), FOOTPRINT::IsFlipped(), MISSING_FP_ARG, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), res, result, ROUTER_TRANSIENT, and searchFootprints().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1104 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), BLIND_BURIED, PCBEXPR_VAR_REF::GetObject(), PCB_VIA::GetViaType(), PCB_VIA_T, LIBEVAL::CONTEXT::Push(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1121 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), DIFF_PAIR_GAP_CONSTRAINT, dummy, BOARD_ITEM::GetBoard(), PCBEXPR_CONTEXT::GetConstraint(), PCBEXPR_CONTEXT::GetItem(), BOARD_CONNECTED_ITEM::GetNet(), BOARD_CONNECTED_ITEM::GetNetname(), NETINFO_ITEM::GetNetname(), LENGTH_CONSTRAINT, DRC_ENGINE::MatchDpSuffix(), LIBEVAL::CONTEXT::Push(), result, and SKEW_CONSTRAINT.
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1087 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), PCBEXPR_VAR_REF::GetObject(), PCB_VIA::GetViaType(), MICROVIA, PCB_VIA_T, LIBEVAL::CONTEXT::Push(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 172 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), PAD::GetAttribute(), PCBEXPR_VAR_REF::GetObject(), PCB_PAD_T, PCB_VIA_T, PTH, LIBEVAL::CONTEXT::Push(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 1051 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), PCBEXPR_VAR_REF::GetObject(), BOARD_ITEM::GetParentFootprint(), LIBEVAL::CONTEXT::HasErrorCallback(), MISSING_REF_ARG, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, and testFootprintSelector().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 884 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), PCBEXPR_VAR_REF::GetObject(), BOARD_ITEM::GetParent(), EDA_ITEM::GetParentGroup(), group, LIBEVAL::CONTEXT::HasErrorCallback(), MISSING_GROUP_ARG, PCB_FOOTPRINT_T, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 930 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), PCBEXPR_VAR_REF::GetObject(), BOARD_ITEM::GetParentFootprint(), FOOTPRINT::GetSheetname(), LIBEVAL::CONTEXT::HasErrorCallback(), MISSING_SHEET_ARG, PCB_FOOTPRINT_T, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
|
static |
Definition at line 985 of file pcbexpr_functions.cpp.
References LIBEVAL::CONTEXT::AllocValue(), LIBEVAL::VALUE::AsString(), PCBEXPR_VAR_REF::GetObject(), BOARD_ITEM::GetParentFootprint(), FOOTPRINT::GetSheetname(), LIBEVAL::CONTEXT::HasErrorCallback(), MISSING_SHEET_ARG, PCB_FOOTPRINT_T, LIBEVAL::CONTEXT::Pop(), LIBEVAL::CONTEXT::Push(), LIBEVAL::CONTEXT::ReportError(), result, and EDA_ITEM::Type().
Referenced by PCBEXPR_BUILTIN_FUNCTIONS::RegisterAllFunctions().
bool searchAreas | ( | BOARD * | aBoard, |
const wxString & | aArg, | ||
PCBEXPR_CONTEXT * | aCtx, | ||
const std::function< bool(ZONE *)> & | aFunc ) |
Definition at line 575 of file pcbexpr_functions.cpp.
References BOARD::Footprints(), PCBEXPR_CONTEXT::GetItem(), KIID::SniffTest(), and BOARD::Zones().
Referenced by enclosedByAreaFunc(), and intersectsAreaFunc().
|
static |
Definition at line 245 of file pcbexpr_functions.cpp.
References BOARD::Footprints(), PCBEXPR_CONTEXT::GetItem(), and testFootprintSelector().
Referenced by intersectsBackCourtyardFunc(), intersectsCourtyardFunc(), and intersectsFrontCourtyardFunc().
|
static |
Definition at line 213 of file pcbexpr_functions.cpp.
References COMPONENT_CLASS::ContainsClassName(), FOOTPRINT::GetComponentClass(), FOOTPRINT::GetFPIDAsString(), FOOTPRINT::GetReference(), and name.
Referenced by memberOfFootprintFunc(), and searchFootprints().