KiCad PCB EDA Suite
Loading...
Searching...
No Matches
generators_mgr.cpp
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) 2023 Alex Shvartzkop <
[email protected]
>
5
* Copyright (C) 2023 KiCad Developers, see AUTHORS.txt for contributors.
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License
9
* as published by the Free Software Foundation; either version 2
10
* of the License, or (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, you may find one here:
19
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20
* or you may search the http://www.gnu.org website for the version 2 license,
21
* or you may write to the Free Software Foundation, Inc.,
22
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23
*/
24
25
#include "
generators_mgr.h
"
26
27
28
GENERATORS_MGR
&
GENERATORS_MGR::Instance
()
29
{
30
static
GENERATORS_MGR
pm;
31
return
pm;
32
}
33
34
35
void
GENERATORS_MGR::Register
(
const
wxString& aTypeStr,
const
wxString& aName,
36
std::function<
PCB_GENERATOR
*(
void
)> aCreateFunc )
37
{
38
wxASSERT( !aName.empty() );
39
wxASSERT( !aTypeStr.empty() );
40
wxASSERT( aCreateFunc );
41
42
ENTRY
ent;
43
ent.
m_createFunc
= aCreateFunc;
44
ent.
m_type
= aTypeStr;
45
ent.
m_displayName
= aName;
46
m_registry
.emplace( aTypeStr, ent );
47
}
48
49
50
PCB_GENERATOR
*
GENERATORS_MGR::CreateFromType
(
const
wxString& aTypeStr )
51
{
52
auto
it =
m_registry
.find( aTypeStr );
53
54
if
( it ==
m_registry
.end() )
55
{
56
// TODO: placeholder
57
return
nullptr
;
58
}
59
60
ENTRY
& entry = it->second;
61
62
return
entry.
m_createFunc
();
63
}
GENERATORS_MGR
A factory which returns an instance of a PCB_GENERATOR.
Definition:
generators_mgr.h:45
GENERATORS_MGR::m_registry
std::map< wxString, ENTRY > m_registry
Definition:
generators_mgr.h:86
GENERATORS_MGR::Register
void Register(const wxString &aTypeStr, const wxString &aName, std::function< PCB_GENERATOR *(void)> aCreateFunc)
Associate a type string to display name and create function.
Definition:
generators_mgr.cpp:35
GENERATORS_MGR::CreateFromType
PCB_GENERATOR * CreateFromType(const wxString &aTypeStr)
Definition:
generators_mgr.cpp:50
GENERATORS_MGR::Instance
static GENERATORS_MGR & Instance()
Definition:
generators_mgr.cpp:28
PCB_GENERATOR
Definition:
pcb_generator.h:44
generators_mgr.h
GENERATORS_MGR::ENTRY
Definition:
generators_mgr.h:48
GENERATORS_MGR::ENTRY::m_createFunc
std::function< PCB_GENERATOR *(void)> m_createFunc
Definition:
generators_mgr.h:51
GENERATORS_MGR::ENTRY::m_type
wxString m_type
Definition:
generators_mgr.h:49
GENERATORS_MGR::ENTRY::m_displayName
wxString m_displayName
Definition:
generators_mgr.h:50
src
pcbnew
generators_mgr.cpp
Generated on Thu Nov 21 2024 00:06:47 for KiCad PCB EDA Suite by
1.9.6