KiCad PCB EDA Suite
DRC_ITEMS_PROVIDER Class Reference

#include <drc_item.h>

Inheritance diagram for DRC_ITEMS_PROVIDER:
RC_ITEMS_PROVIDER

Public Member Functions

 DRC_ITEMS_PROVIDER (BOARD *aBoard, MARKER_BASE::TYPEMARKER aMarkerType, MARKER_BASE::TYPEMARKER otherMarkerType=MARKER_BASE::MARKER_UNSPEC)
 
void SetSeverities (int aSeverities) override
 
int GetCount (int aSeverity=-1) const override
 
std::shared_ptr< RC_ITEMGetItem (int aIndex) const override
 Retrieve a RC_ITEM by index. More...
 
void DeleteItem (int aIndex, bool aDeep) override
 Remove (and optionally deletes) the indexed item from the list. More...
 

Private Attributes

BOARDm_board
 
std::vector< MARKER_BASE::TYPEMARKERm_markerTypes
 
int m_severities
 
std::vector< PCB_MARKER * > m_filteredMarkers
 

Detailed Description

Definition at line 216 of file drc_item.h.

Constructor & Destructor Documentation

◆ DRC_ITEMS_PROVIDER()

DRC_ITEMS_PROVIDER::DRC_ITEMS_PROVIDER ( BOARD aBoard,
MARKER_BASE::TYPEMARKER  aMarkerType,
MARKER_BASE::TYPEMARKER  otherMarkerType = MARKER_BASE::MARKER_UNSPEC 
)
inline

Definition at line 219 of file drc_item.h.

220 :
221 m_board( aBoard ),
222 m_severities( 0 )
223 {
224 m_markerTypes.push_back( aMarkerType );
225
226 if( otherMarkerType != MARKER_BASE::MARKER_UNSPEC )
227 m_markerTypes.push_back( otherMarkerType );
228 }
std::vector< MARKER_BASE::TYPEMARKER > m_markerTypes
Definition: drc_item.h:240

References m_markerTypes, and MARKER_BASE::MARKER_UNSPEC.

Member Function Documentation

◆ DeleteItem()

void DRC_ITEMS_PROVIDER::DeleteItem ( int  aIndex,
bool  aDeep 
)
overridevirtual

Remove (and optionally deletes) the indexed item from the list.

Parameters
aDeepIf true, the source item should be deleted as well as its entry in the list.

Implements RC_ITEMS_PROVIDER.

Definition at line 479 of file drc_item.cpp.

480{
481 PCB_MARKER* marker = m_filteredMarkers[ aIndex ];
482 m_filteredMarkers.erase( m_filteredMarkers.begin() + aIndex );
483
484 if( aDeep )
485 m_board->Delete( marker );
486}
virtual void Delete(BOARD_ITEM *aItem)
Removes an item from the container and deletes it.
std::vector< PCB_MARKER * > m_filteredMarkers
Definition: drc_item.h:243

References BOARD_ITEM_CONTAINER::Delete(), m_board, and m_filteredMarkers.

◆ GetCount()

int DRC_ITEMS_PROVIDER::GetCount ( int  aSeverity = -1) const
overridevirtual

Implements RC_ITEMS_PROVIDER.

Definition at line 451 of file drc_item.cpp.

452{
453 if( aSeverity < 0 )
454 return m_filteredMarkers.size();
455
456 int count = 0;
457
458 for( PCB_MARKER* marker : m_board->Markers() )
459 {
460 if( alg::contains( m_markerTypes, marker->GetMarkerType() )
461 && ( marker->GetSeverity() & aSeverity ) > 0 )
462 {
463 count++;
464 }
465 }
466
467 return count;
468}
MARKERS & Markers()
Definition: board.h:320
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99

References alg::contains(), m_board, m_filteredMarkers, m_markerTypes, and BOARD::Markers().

◆ GetItem()

std::shared_ptr< RC_ITEM > DRC_ITEMS_PROVIDER::GetItem ( int  aIndex) const
overridevirtual

Retrieve a RC_ITEM by index.

Implements RC_ITEMS_PROVIDER.

Definition at line 471 of file drc_item.cpp.

472{
473 PCB_MARKER* marker = m_filteredMarkers[ aIndex ];
474
475 return marker ? marker->GetRCItem() : nullptr;
476}
std::shared_ptr< RC_ITEM > GetRCItem() const
Definition: marker_base.h:105

References MARKER_BASE::GetRCItem(), and m_filteredMarkers.

◆ SetSeverities()

void DRC_ITEMS_PROVIDER::SetSeverities ( int  aSeverities)
overridevirtual

Implements RC_ITEMS_PROVIDER.

Definition at line 434 of file drc_item.cpp.

435{
436 m_severities = aSeverities;
437
438 m_filteredMarkers.clear();
439
440 for( PCB_MARKER* marker : m_board->Markers() )
441 {
442 if( alg::contains( m_markerTypes, marker->GetMarkerType() )
443 && ( marker->GetSeverity() & m_severities ) > 0 )
444 {
445 m_filteredMarkers.push_back( marker );
446 }
447 }
448}

References alg::contains(), m_board, m_filteredMarkers, m_markerTypes, m_severities, and BOARD::Markers().

Member Data Documentation

◆ m_board

BOARD* DRC_ITEMS_PROVIDER::m_board
private

Definition at line 239 of file drc_item.h.

Referenced by DeleteItem(), GetCount(), and SetSeverities().

◆ m_filteredMarkers

std::vector<PCB_MARKER*> DRC_ITEMS_PROVIDER::m_filteredMarkers
private

Definition at line 243 of file drc_item.h.

Referenced by DeleteItem(), GetCount(), GetItem(), and SetSeverities().

◆ m_markerTypes

std::vector<MARKER_BASE::TYPEMARKER> DRC_ITEMS_PROVIDER::m_markerTypes
private

Definition at line 240 of file drc_item.h.

Referenced by DRC_ITEMS_PROVIDER(), GetCount(), and SetSeverities().

◆ m_severities

int DRC_ITEMS_PROVIDER::m_severities
private

Definition at line 242 of file drc_item.h.

Referenced by SetSeverities().


The documentation for this class was generated from the following files: