KiCad PCB EDA Suite
EDA_COMBINED_MATCHER Class Reference

#include <eda_pattern_match.h>

Public Member Functions

 EDA_COMBINED_MATCHER (const wxString &aPattern)
 
bool Find (const wxString &aTerm, int &aMatchersTriggered, int &aPosition)
 
wxString const & GetPattern () const
 

Private Member Functions

void AddMatcher (const wxString &aPattern, std::unique_ptr< EDA_PATTERN_MATCH > aMatcher)
 

Private Attributes

std::vector< std::unique_ptr< EDA_PATTERN_MATCH > > m_matchers
 
wxString m_pattern
 

Detailed Description

Definition at line 154 of file eda_pattern_match.h.

Constructor & Destructor Documentation

EDA_COMBINED_MATCHER::EDA_COMBINED_MATCHER ( const wxString &  aPattern)

Definition at line 341 of file eda_pattern_match.cpp.

References AddMatcher().

342  : m_pattern( aPattern )
343 {
344  // Whatever syntax users prefer, it shall be matched.
345  AddMatcher( aPattern, std::make_unique<EDA_PATTERN_MATCH_REGEX>() );
346  AddMatcher( aPattern, std::make_unique<EDA_PATTERN_MATCH_WILDCARD>() );
347  AddMatcher( aPattern, std::make_unique<EDA_PATTERN_MATCH_RELATIONAL>() );
348  // If any of the above matchers couldn't be created because the pattern
349  // syntax does not match, the substring will try its best.
350  AddMatcher( aPattern, std::make_unique<EDA_PATTERN_MATCH_SUBSTR>() );
351 }
void AddMatcher(const wxString &aPattern, std::unique_ptr< EDA_PATTERN_MATCH > aMatcher)

Member Function Documentation

void EDA_COMBINED_MATCHER::AddMatcher ( const wxString &  aPattern,
std::unique_ptr< EDA_PATTERN_MATCH aMatcher 
)
private

Definition at line 384 of file eda_pattern_match.cpp.

References m_matchers.

Referenced by EDA_COMBINED_MATCHER().

387 {
388  if ( aMatcher->SetPattern( aPattern ) )
389  {
390  m_matchers.push_back( std::move( aMatcher ) );
391  }
392 }
std::vector< std::unique_ptr< EDA_PATTERN_MATCH > > m_matchers
bool EDA_COMBINED_MATCHER::Find ( const wxString &  aTerm,
int &  aMatchersTriggered,
int &  aPosition 
)

Definition at line 354 of file eda_pattern_match.cpp.

References EDA_PATTERN_NOT_FOUND, and m_matchers.

Referenced by CMP_TREE_NODE_LIB_ID::UpdateScore().

355 {
356  aPosition = EDA_PATTERN_NOT_FOUND;
357  aMatchersTriggered = 0;
358 
359  for( auto const& matcher : m_matchers )
360  {
361  int local_find = matcher->Find( aTerm );
362 
363  if ( local_find != EDA_PATTERN_NOT_FOUND )
364  {
365  aMatchersTriggered += 1;
366 
367  if ( local_find < aPosition || aPosition == EDA_PATTERN_NOT_FOUND )
368  {
369  aPosition = local_find;
370  }
371  }
372  }
373 
374  return aPosition != EDA_PATTERN_NOT_FOUND;
375 }
std::vector< std::unique_ptr< EDA_PATTERN_MATCH > > m_matchers
static const int EDA_PATTERN_NOT_FOUND
wxString const & EDA_COMBINED_MATCHER::GetPattern ( ) const

Definition at line 378 of file eda_pattern_match.cpp.

References m_pattern.

Referenced by CMP_TREE_NODE_LIB_ID::UpdateScore().

379 {
380  return m_pattern;
381 }

Member Data Documentation

std::vector<std::unique_ptr<EDA_PATTERN_MATCH> > EDA_COMBINED_MATCHER::m_matchers
private

Definition at line 177 of file eda_pattern_match.h.

Referenced by AddMatcher(), and Find().

wxString EDA_COMBINED_MATCHER::m_pattern
private

Definition at line 178 of file eda_pattern_match.h.

Referenced by GetPattern().


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