KiCad PCB EDA Suite
Loading...
Searching...
No Matches
common/netlist_reader/netlist_reader.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
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU 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, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#pragma once
25
26#include <macros.h>
27#include <lib_id.h>
28
29
30class LINE_READER;
31
32
37{
38public:
44 CMP_READER( LINE_READER* aLineReader )
45 {
46 m_lineReader = aLineReader;
47 }
48
50
77 bool Load( NETLIST* aNetlist );
78
79private:
81};
82
83
92{
93public:
94
96 {
97 UNKNOWN = -1,
101
102 // Add new types here. Don't forget to create the appropriate class derived from
103 // NETCLASS_READER and add the entry to the NETLIST_READER::GetNetlistReader()
104 // function.
105 };
106
113 NETLIST* aNetlist,
114 CMP_READER* aFootprintLinkReader = nullptr )
115 {
116 wxASSERT( aLineReader != nullptr );
117
118 m_lineReader = aLineReader;
119 m_footprintReader = aFootprintLinkReader;
120 m_netlist = aNetlist;
122 m_loadNets = true;
123 }
124
125 virtual ~NETLIST_READER();
126
134 static NETLIST_FILE_T GuessNetlistFileType( LINE_READER* aLineReader );
135
148 static NETLIST_READER* GetNetlistReader( NETLIST* aNetlist,
149 const wxString& aNetlistFileName,
150 const wxString& aCompFootprintFileName = wxEmptyString );
151
158 virtual void LoadNetlist() = 0;
159
160protected:
165
168};
169
170
178{
190 COMPONENT* loadComponent( char* aText );
191
211
220 void loadNet( char* aText, COMPONENT* aComponent );
221
222public:
223
225 NETLIST* aNetlist,
226 CMP_READER* aFootprintLinkReader = nullptr ) :
227 NETLIST_READER( aLineReader, aNetlist, aFootprintLinkReader )
228 {
229 }
230
251 virtual void LoadNetlist() override;
252};
253
254
259{
260public:
262 NETLIST* aNetlist,
263 CMP_READER* aFootprintLinkReader = nullptr ) :
264 NETLIST_READER( aLineReader, aNetlist, aFootprintLinkReader )
265 { }
266
268 { }
269
270 virtual void LoadNetlist() override;
271};
Read a component footprint link file (*.cmp) format.
LINE_READER * m_lineReader
The line reader to read.
bool Load(NETLIST *aNetlist)
Read the *.cmp file format contains the component footprint assignments created by CvPcb into aNetlis...
CMP_READER(LINE_READER *aLineReader)
Store all of the related component information found in a netlist.
virtual void LoadNetlist() override
Load the contents of the netlist file into aNetlist.
KICAD_NETLIST_READER(LINE_READER *aLineReader, NETLIST *aNetlist, CMP_READER *aFootprintLinkReader=nullptr)
LEGACY_NETLIST_READER(LINE_READER *aLineReader, NETLIST *aNetlist, CMP_READER *aFootprintLinkReader=nullptr)
COMPONENT * loadComponent(char *aText)
Read the aLine containing the description of a component from a legacy format netlist and add it to t...
void loadFootprintFilters()
Load the footprint filter section of netlist file.
void loadNet(char *aText, COMPONENT *aComponent)
Function loadNet read a component net description from aText.
virtual void LoadNetlist() override
Read the netlist file in the legacy format into aNetlist.
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
Definition richio.h:94
Base class to derive netlist readers from.
static NETLIST_READER * GetNetlistReader(NETLIST *aNetlist, const wxString &aNetlistFileName, const wxString &aCompFootprintFileName=wxEmptyString)
Attempt to determine the net list file type of aNetlistFileName and return the appropriate NETLIST_RE...
static NETLIST_FILE_T GuessNetlistFileType(LINE_READER *aLineReader)
Look at aFileHeaderLine to see if it matches any of the netlist file types it knows about.
bool m_loadFootprintFilters
Load the component footprint filters section if true.
virtual void LoadNetlist()=0
Load the contents of the netlist file into aNetlist.
CMP_READER * m_footprintReader
The reader used to load the footprint links. If NULL, footprint links are not read.
LINE_READER * m_lineReader
The line reader of the netlist.
NETLIST_READER(LINE_READER *aLineReader, NETLIST *aNetlist, CMP_READER *aFootprintLinkReader=nullptr)
NETLIST * m_netlist
The net list to read the file(s) into.
bool m_loadNets
Load the nets section of the netlist file if true.
Store information read from a netlist along with the flags used to update the NETLIST in the BOARD.
This file contains miscellaneous commonly used macros and functions.