KiCad PCB EDA Suite
Loading...
Searching...
No Matches
footprint_info_impl.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 along
17
* with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#ifndef FOOTPRINT_INFO_IMPL_H
21
#define FOOTPRINT_INFO_IMPL_H
22
23
#include <atomic>
24
#include <functional>
25
#include <memory>
26
#include <mutex>
27
#include <thread>
28
#include <vector>
29
30
#include <
footprint_info.h
>
31
#include <
core/sync_queue.h
>
32
33
class
LOCALE_IO
;
34
35
class
FOOTPRINT_INFO_IMPL
:
public
FOOTPRINT_INFO
36
{
37
public
:
38
FOOTPRINT_INFO_IMPL
(
FOOTPRINT_LIST
* aOwner,
const
wxString& aNickname,
const
wxString& aFootprintName )
39
{
40
m_nickname
= aNickname;
41
m_fpname
= aFootprintName;
42
m_num
= 0;
43
m_pad_count
= 0;
44
m_unique_pad_count
= 0;
45
46
m_owner
= aOwner;
47
m_loaded
=
false
;
48
load
();
49
}
50
51
// A constructor for cached items
52
FOOTPRINT_INFO_IMPL
(
const
wxString& aNickname,
const
wxString& aFootprintName,
53
const
wxString& aDescription,
const
wxString& aKeywords,
54
int
aOrderNum,
unsigned
int
aPadCount,
unsigned
int
aUniquePadCount )
55
{
56
m_nickname
= aNickname;
57
m_fpname
= aFootprintName;
58
m_num
= aOrderNum;
59
m_pad_count
= aPadCount;
60
m_unique_pad_count
= aUniquePadCount;
61
m_doc
= aDescription;
62
m_keywords
= aKeywords;
63
64
m_owner
=
nullptr
;
65
m_loaded
=
true
;
66
}
67
68
69
// A dummy constructor for use as a target in a binary search
70
FOOTPRINT_INFO_IMPL
(
const
wxString& aNickname,
const
wxString& aFootprintName )
71
{
72
m_nickname
= aNickname;
73
m_fpname
= aFootprintName;
74
75
m_owner
=
nullptr
;
76
m_loaded
=
true
;
77
}
78
79
protected
:
80
virtual
void
load
()
override
;
81
};
82
83
84
class
FOOTPRINT_LIST_IMPL
:
public
FOOTPRINT_LIST
85
{
86
public
:
87
FOOTPRINT_LIST_IMPL
();
88
virtual
~FOOTPRINT_LIST_IMPL
() {};
89
90
bool
ReadFootprintFiles
(
FOOTPRINT_LIBRARY_ADAPTER
* aAdapter,
const
wxString* aNickname =
nullptr
,
91
PROGRESS_REPORTER
* aProgressReporter =
nullptr
)
override
;
92
93
void
Clear
()
override
;
94
105
void
WithFootprintsForLibrary
(
const
wxString& aLibName,
106
const
std::function<
void
(
const
std::vector<LIB_TREE_ITEM*>& )>& aCallback );
107
108
protected
:
109
void
loadFootprints
();
110
111
private
:
117
bool
CatchErrors
(
const
std::function<
void
()>& aFunc );
118
119
SYNC_QUEUE<wxString>
m_queue
;
120
long
long
m_list_timestamp
;
121
PROGRESS_REPORTER
*
m_progress_reporter
;
122
std::atomic_bool
m_cancelled
;
123
std::mutex
m_join
;
124
std::mutex
m_loadInProgress
;
125
};
126
127
128
#endif
// FOOTPRINT_INFO_IMPL_H
FOOTPRINT_INFO_IMPL::FOOTPRINT_INFO_IMPL
FOOTPRINT_INFO_IMPL(const wxString &aNickname, const wxString &aFootprintName)
Definition
footprint_info_impl.h:70
FOOTPRINT_INFO_IMPL::FOOTPRINT_INFO_IMPL
FOOTPRINT_INFO_IMPL(FOOTPRINT_LIST *aOwner, const wxString &aNickname, const wxString &aFootprintName)
Definition
footprint_info_impl.h:38
FOOTPRINT_INFO_IMPL::load
virtual void load() override
lazily load stuff not filled in by constructor. This may throw IO_ERRORS.
Definition
footprint_info_impl.cpp:36
FOOTPRINT_INFO_IMPL::FOOTPRINT_INFO_IMPL
FOOTPRINT_INFO_IMPL(const wxString &aNickname, const wxString &aFootprintName, const wxString &aDescription, const wxString &aKeywords, int aOrderNum, unsigned int aPadCount, unsigned int aUniquePadCount)
Definition
footprint_info_impl.h:52
FOOTPRINT_INFO
Definition
footprint_info.h:60
FOOTPRINT_INFO::m_doc
wxString m_doc
Footprint description.
Definition
footprint_info.h:148
FOOTPRINT_INFO::m_num
int m_num
Order number in the display list.
Definition
footprint_info.h:145
FOOTPRINT_INFO::m_fpname
wxString m_fpname
Module name.
Definition
footprint_info.h:144
FOOTPRINT_INFO::m_loaded
bool m_loaded
Definition
footprint_info.h:141
FOOTPRINT_INFO::m_keywords
wxString m_keywords
Footprint keywords.
Definition
footprint_info.h:149
FOOTPRINT_INFO::m_unique_pad_count
unsigned m_unique_pad_count
Number of unique pads.
Definition
footprint_info.h:147
FOOTPRINT_INFO::m_pad_count
unsigned m_pad_count
Number of pads.
Definition
footprint_info.h:146
FOOTPRINT_INFO::m_owner
FOOTPRINT_LIST * m_owner
provides access to FP_LIB_TABLE
Definition
footprint_info.h:139
FOOTPRINT_INFO::m_nickname
wxString m_nickname
library as known in FP_LIB_TABLE
Definition
footprint_info.h:143
FOOTPRINT_LIBRARY_ADAPTER
An interface to the global shared library manager that is schematic-specific and linked to one projec...
Definition
footprint_library_adapter.h:40
FOOTPRINT_LIST_IMPL::ReadFootprintFiles
bool ReadFootprintFiles(FOOTPRINT_LIBRARY_ADAPTER *aAdapter, const wxString *aNickname=nullptr, PROGRESS_REPORTER *aProgressReporter=nullptr) override
Read all the footprints provided by the combination of aTable and aNickname.
Definition
footprint_info_impl.cpp:145
FOOTPRINT_LIST_IMPL::WithFootprintsForLibrary
void WithFootprintsForLibrary(const wxString &aLibName, const std::function< void(const std::vector< LIB_TREE_ITEM * > &)> &aCallback)
Execute a callback with thread-safe access to the footprints for a library.
Definition
footprint_info_impl.cpp:81
FOOTPRINT_LIST_IMPL::m_loadInProgress
std::mutex m_loadInProgress
Definition
footprint_info_impl.h:124
FOOTPRINT_LIST_IMPL::FOOTPRINT_LIST_IMPL
FOOTPRINT_LIST_IMPL()
Definition
footprint_info_impl.cpp:294
FOOTPRINT_LIST_IMPL::m_list_timestamp
long long m_list_timestamp
Definition
footprint_info_impl.h:120
FOOTPRINT_LIST_IMPL::m_cancelled
std::atomic_bool m_cancelled
Definition
footprint_info_impl.h:122
FOOTPRINT_LIST_IMPL::loadFootprints
void loadFootprints()
Definition
footprint_info_impl.cpp:213
FOOTPRINT_LIST_IMPL::m_join
std::mutex m_join
Definition
footprint_info_impl.h:123
FOOTPRINT_LIST_IMPL::m_queue
SYNC_QUEUE< wxString > m_queue
Definition
footprint_info_impl.h:119
FOOTPRINT_LIST_IMPL::CatchErrors
bool CatchErrors(const std::function< void()> &aFunc)
Call aFunc, pushing any IO_ERRORs and std::exceptions it throws onto m_errors.
Definition
footprint_info_impl.cpp:114
FOOTPRINT_LIST_IMPL::~FOOTPRINT_LIST_IMPL
virtual ~FOOTPRINT_LIST_IMPL()
Definition
footprint_info_impl.h:88
FOOTPRINT_LIST_IMPL::Clear
void Clear() override
Definition
footprint_info_impl.cpp:72
FOOTPRINT_LIST_IMPL::m_progress_reporter
PROGRESS_REPORTER * m_progress_reporter
Definition
footprint_info_impl.h:121
FOOTPRINT_LIST
Holds a list of FOOTPRINT_INFO objects, along with a list of IO_ERRORs or PARSE_ERRORs that were thro...
Definition
footprint_info.h:161
FOOTPRINT_LIST::FOOTPRINT_LIST
FOOTPRINT_LIST()
Definition
footprint_info.h:163
LOCALE_IO
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown.
Definition
locale_io.h:41
PROGRESS_REPORTER
A progress reporter interface for use in multi-threaded environments.
Definition
progress_reporter.h:40
SYNC_QUEUE
Synchronized, locking queue.
Definition
sync_queue.h:32
footprint_info.h
sync_queue.h
src
pcbnew
footprint_info_impl.h
Generated on Sun Feb 1 2026 00:08:31 for KiCad PCB EDA Suite by
1.13.2