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 (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#include <wx/arrstr.h>
27
28
34{
35public:
42
48
52 void SetList( FOOTPRINT_LIST& aList );
53
57 void ClearFilters();
58
62 void FilterByLibrary( const wxString& aLibName );
63
67 void FilterByPinCount( int aPinCount );
68
72 void FilterByFootprintFilters( const wxArrayString& aFilters );
73
78 void FilterByTextPattern( const wxString& aPattern );
79
84 : public boost::iterator_facade<ITERATOR, FOOTPRINT_INFO, boost::forward_traversal_tag>
85 {
86 public:
87 ITERATOR();
88 ITERATOR( const ITERATOR& aOther );
89 ITERATOR( FOOTPRINT_FILTER& aFilter );
90
91 private:
93 friend class FOOTPRINT_FILTER;
94
95 void increment();
96 bool equal( const ITERATOR& aOther ) const;
98
99 size_t m_pos;
101
106
110 bool PinCountMatch( FOOTPRINT_INFO& aItem );
111 };
112
116 ITERATOR begin();
117
122 ITERATOR end();
123
124private:
129 enum FP_FILTER_T : int
130 {
136 };
137
139
140 wxString m_lib_name;
144
145 std::vector<std::unique_ptr<EDA_COMBINED_MATCHER>> m_pattern_filters;
146 std::vector<std::unique_ptr<EDA_PATTERN_MATCH>> m_footprint_filters;
147};
148
149#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.