drc_proto: implement QueryWorstConstraint
This commit is contained in:
parent
bc86ea7682
commit
e9d37dd7ce
|
@ -32,13 +32,12 @@ if( BUILD_GITHUB_PLUGIN )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
add_dependencies( pnsrouter pcbcommon pcad2kicadpcb ${GITHUB_PLUGIN_LIBRARIES} )
|
|
||||||
|
|
||||||
add_executable( drc_proto
|
add_executable( drc_proto
|
||||||
|
drc_rules_proto_keywords.cpp
|
||||||
drc_proto_test.cpp
|
drc_proto_test.cpp
|
||||||
drc_rule.cpp
|
drc_rule.cpp
|
||||||
drc_rule_parser.cpp
|
drc_rule_parser.cpp
|
||||||
drc_rules_proto_keywords.cpp
|
|
||||||
drc_test_provider.cpp
|
drc_test_provider.cpp
|
||||||
drc_test_provider_clearance_base.cpp
|
drc_test_provider_clearance_base.cpp
|
||||||
drc_test_provider_copper_clearance.cpp
|
drc_test_provider_copper_clearance.cpp
|
||||||
|
@ -51,6 +50,8 @@ add_executable( drc_proto
|
||||||
../../3d-viewer/3d_viewer/3d_viewer_settings.cpp
|
../../3d-viewer/3d_viewer/3d_viewer_settings.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_dependencies( drc_proto pnsrouter pcbcommon pcad2kicadpcb ${GITHUB_PLUGIN_LIBRARIES} )
|
||||||
|
|
||||||
include_directories( BEFORE ${INC_BEFORE} )
|
include_directories( BEFORE ${INC_BEFORE} )
|
||||||
include_directories(
|
include_directories(
|
||||||
${CMAKE_SOURCE_DIR}
|
${CMAKE_SOURCE_DIR}
|
||||||
|
|
|
@ -111,7 +111,7 @@ void test::DRC_ENGINE::inferImplicitRules()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const int drc_debug_level = 10;
|
static const int drc_debug_level = -10;
|
||||||
|
|
||||||
void test::drc_dbg( int level, const char* fmt, ... )
|
void test::drc_dbg( int level, const char* fmt, ... )
|
||||||
{
|
{
|
||||||
|
@ -282,4 +282,37 @@ void test::DRC_ENGINE::ReportStage ( const wxString& aStageName, int index, int
|
||||||
m_progressReporter->BeginPhase( index ); // fixme: coalesce all stages/test providers
|
m_progressReporter->BeginPhase( index ); // fixme: coalesce all stages/test providers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
test::DRC_CONSTRAINT test::DRC_ENGINE::GetWorstGlobalConstraint( test::DRC_RULE_ID_T ruleID )
|
||||||
|
{
|
||||||
|
DRC_CONSTRAINT rv;
|
||||||
|
|
||||||
|
rv.m_Value.SetMin( std::numeric_limits<int>::max() );
|
||||||
|
rv.m_Value.SetMax( std::numeric_limits<int>::min() );
|
||||||
|
for( auto rule : QueryRulesById( ruleID ) )
|
||||||
|
{
|
||||||
|
auto mm = rule->GetConstraint().m_Value;
|
||||||
|
if( mm.HasMax() )
|
||||||
|
rv.m_Value.SetMax( std::max( mm.Max(), rv.m_Value.Max() ) );
|
||||||
|
if( mm.HasMin() )
|
||||||
|
rv.m_Value.SetMin( std::min( mm.Min(), rv.m_Value.Min() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::vector<test::DRC_RULE*> test::DRC_ENGINE::QueryRulesById( test::DRC_RULE_ID_T ruleID )
|
||||||
|
{
|
||||||
|
std::vector<test::DRC_RULE*> rv;
|
||||||
|
|
||||||
|
rv.push_back( m_ruleMap[ruleID]->defaultRule );
|
||||||
|
|
||||||
|
for( auto rule : m_ruleMap[ruleID]->sortedRules )
|
||||||
|
{
|
||||||
|
rv.push_back(rule->rule);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -190,6 +190,8 @@ public:
|
||||||
DRC_RULE* EvalRulesForItems(
|
DRC_RULE* EvalRulesForItems(
|
||||||
DRC_RULE_ID_T ruleID, BOARD_ITEM* a, BOARD_ITEM* b = nullptr );
|
DRC_RULE_ID_T ruleID, BOARD_ITEM* a, BOARD_ITEM* b = nullptr );
|
||||||
|
|
||||||
|
std::vector<DRC_RULE*> QueryRulesById( test::DRC_RULE_ID_T ruleID );
|
||||||
|
|
||||||
EDA_UNITS UserUnits() const
|
EDA_UNITS UserUnits() const
|
||||||
{
|
{
|
||||||
return EDA_UNITS::MILLIMETRES;
|
return EDA_UNITS::MILLIMETRES;
|
||||||
|
|
|
@ -62,6 +62,10 @@ public:
|
||||||
T Max() const { assert( m_hasMax ); return m_max; };
|
T Max() const { assert( m_hasMax ); return m_max; };
|
||||||
T Opt() const { assert( m_hasOpt ); return m_opt; };
|
T Opt() const { assert( m_hasOpt ); return m_opt; };
|
||||||
|
|
||||||
|
bool HasMin() const { return m_hasMin; }
|
||||||
|
bool HasMax() const { return m_hasMax; }
|
||||||
|
bool HasOpt() const { return m_hasOpt; }
|
||||||
|
|
||||||
void SetMin( T v ) { m_min = v; m_hasMin = true; }
|
void SetMin( T v ) { m_min = v; m_hasMin = true; }
|
||||||
void SetMax( T v ) { m_max = v; m_hasMax = true; }
|
void SetMax( T v ) { m_max = v; m_hasMax = true; }
|
||||||
void SetOpt( T v ) { m_opt = v; m_hasOpt = true; }
|
void SetOpt( T v ) { m_opt = v; m_hasOpt = true; }
|
||||||
|
|
Loading…
Reference in New Issue