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, see <https://www.gnu.org/licenses/>.
18 */
19
20#pragma once
21
22#include <macros.h>
23#include <lib_id.h>
24
25
26class LINE_READER;
27
28
33{
34public:
40 CMP_READER( LINE_READER* aLineReader )
41 {
42 m_lineReader = aLineReader;
43 }
44
46
73 bool Load( NETLIST* aNetlist );
74
75private:
77};
78
79
88{
89public:
90
92 {
93 UNKNOWN = -1,
97
98 // Add new types here. Don't forget to create the appropriate class derived from
99 // NETCLASS_READER and add the entry to the NETLIST_READER::GetNetlistReader()
100 // function.
101 };
102
109 NETLIST* aNetlist,
110 CMP_READER* aFootprintLinkReader = nullptr )
111 {
112 wxASSERT( aLineReader != nullptr );
113
114 m_lineReader = aLineReader;
115 m_footprintReader = aFootprintLinkReader;
116 m_netlist = aNetlist;
118 m_loadNets = true;
119 }
120
121 virtual ~NETLIST_READER();
122
130 static NETLIST_FILE_T GuessNetlistFileType( LINE_READER* aLineReader );
131
144 static NETLIST_READER* GetNetlistReader( NETLIST* aNetlist,
145 const wxString& aNetlistFileName,
146 const wxString& aCompFootprintFileName = wxEmptyString );
147
154 virtual void LoadNetlist() = 0;
155
156protected:
161
164};
165
166
174{
186 COMPONENT* loadComponent( char* aText );
187
207
216 void loadNet( char* aText, COMPONENT* aComponent );
217
218public:
219
221 NETLIST* aNetlist,
222 CMP_READER* aFootprintLinkReader = nullptr ) :
223 NETLIST_READER( aLineReader, aNetlist, aFootprintLinkReader )
224 {
225 }
226
247 virtual void LoadNetlist() override;
248};
249
250
255{
256public:
258 NETLIST* aNetlist,
259 CMP_READER* aFootprintLinkReader = nullptr ) :
260 NETLIST_READER( aLineReader, aNetlist, aFootprintLinkReader )
261 { }
262
264 { }
265
266 virtual void LoadNetlist() override;
267};
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:62
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.