KiCad PCB EDA Suite
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 (C) 2017-2021 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 along
17 * with this program. If not, see <http://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
27
33{
34public:
41
47
51 void SetList( FOOTPRINT_LIST& aList );
52
56 void ClearFilters();
57
61 void FilterByLibrary( const wxString& aLibName );
62
66 void FilterByPinCount( int aPinCount );
67
71 void FilterByFootprintFilters( const wxArrayString& aFilters );
72
77 void FilterByTextPattern( const wxString& aPattern );
78
83 : public boost::iterator_facade<ITERATOR, FOOTPRINT_INFO, boost::forward_traversal_tag>
84 {
85 public:
86 ITERATOR();
87 ITERATOR( const ITERATOR& aOther );
88 ITERATOR( FOOTPRINT_FILTER& aFilter );
89
90 private:
92 friend class FOOTPRINT_FILTER;
93
94 void increment();
95 bool equal( const ITERATOR& aOther ) const;
97
98 size_t m_pos;
100
105
109 bool PinCountMatch( FOOTPRINT_INFO& aItem );
110 };
111
115 ITERATOR begin();
116
121 ITERATOR end();
122
123private:
128 enum FP_FILTER_T : int
129 {
135 };
136
138
139 wxString m_lib_name;
143
144 std::vector<std::unique_ptr<EDA_COMBINED_MATCHER>> m_pattern_filters;
145 std::vector<std::unique_ptr<EDA_PATTERN_MATCH>> m_footprint_filters;
146};
147
148#endif // FOOTPRINT_FILTER_H
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
FOOTPRINT_FILTER * m_filter
bool FootprintFilterMatch(FOOTPRINT_INFO &aItem)
Check if the stored component matches an item by footprint filter.
friend class boost::iterator_core_access
Footprint display 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.
Holds a list of FOOTPRINT_INFO objects, along with a list of IO_ERRORs or PARSE_ERRORs that were thro...
Abstract pattern-matching tool and implementations.