KiCad PCB EDA Suite
Loading...
Searching...
No Matches
footprint_filter.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
20#ifndef FOOTPRINT_FILTER_H
21#define FOOTPRINT_FILTER_H
22
23#include <boost/iterator/iterator_facade.hpp>
24#include <eda_pattern_match.h>
25#include <footprint_info.h>
26#include <wx/arrstr.h>
27
28
41bool FootprintFilterMatchesName( const EDA_PATTERN_MATCH& aFilter, const wxString& aLibNickname,
42 const wxString& aFootprintName );
43
44
50{
51public:
58
64
68 void SetList( FOOTPRINT_LIST& aList );
69
73 void ClearFilters();
74
78 void FilterByLibrary( const wxString& aLibName );
79
83 void FilterByPinCount( int aPinCount );
84
88 void FilterByFootprintFilters( const wxArrayString& aFilters );
89
94 void FilterByTextPattern( const wxString& aPattern );
95
100 : public boost::iterator_facade<ITERATOR, FOOTPRINT_INFO, boost::forward_traversal_tag>
101 {
102 public:
103 ITERATOR();
104 ITERATOR( const ITERATOR& aOther );
105 ITERATOR( FOOTPRINT_FILTER& aFilter );
106
107 private:
109 friend class FOOTPRINT_FILTER;
110
111 void increment();
112 bool equal( const ITERATOR& aOther ) const;
114
115 size_t m_pos;
117
122
126 bool PinCountMatch( FOOTPRINT_INFO& aItem );
127 };
128
132 ITERATOR begin();
133
138 ITERATOR end();
139
140private:
153
155
156 wxString m_lib_name;
160
161 std::vector<std::unique_ptr<EDA_COMBINED_MATCHER>> m_pattern_filters;
162 std::vector<std::unique_ptr<EDA_PATTERN_MATCH>> m_footprint_filters;
163};
164
165#endif // FOOTPRINT_FILTER_H
Interface for a pattern matcher for which there are several implementations.
Inner iterator class returned by begin() and end().
bool PinCountMatch(FOOTPRINT_INFO &aItem)
Check if the stored component matches an item by pin count.
FOOTPRINT_INFO & dereference() const
bool equal(const ITERATOR &aOther) const
bool FootprintFilterMatch(FOOTPRINT_INFO &aItem)
Check if the stored component matches an item by footprint filter.
friend class boost::iterator_core_access
FOOTPRINT_FILTER(FOOTPRINT_LIST &aList)
Construct a filter.
FOOTPRINT_FILTER()
Construct a filter without assigning a footprint list.
FOOTPRINT_LIST * m_list
void SetList(FOOTPRINT_LIST &aList)
Set the list to filter.
void FilterByPinCount(int aPinCount)
Set a pin count to filter by.
ITERATOR begin()
Get an iterator to the beginning of the filtered view.
void FilterByTextPattern(const wxString &aPattern)
Add a pattern to filter by name, including wildcards and optionally a colon-delimited library name.
void ClearFilters()
Clear all filter criteria.
void FilterByLibrary(const wxString &aLibName)
Add library name to filter criteria.
ITERATOR end()
Get an iterator to the end of the filtered view.
std::vector< std::unique_ptr< EDA_COMBINED_MATCHER > > m_pattern_filters
std::vector< std::unique_ptr< EDA_PATTERN_MATCH > > m_footprint_filters
FP_FILTER_T
Filter setting constants.
void FilterByFootprintFilters(const wxArrayString &aFilters)
Set a list of footprint filters to filter by.
Helper class to handle the list of footprints available in libraries.
A list of FOOTPRINT_INFO objects, along with a list of IO_ERROR objects or PARSE_ERRORs that were thr...
Abstract pattern-matching tool and implementations.
bool FootprintFilterMatchesName(const EDA_PATTERN_MATCH &aFilter, const wxString &aLibNickname, const wxString &aFootprintName)
Whether a given footprint matches a specified filter.