KiCad PCB EDA Suite
netlist_exporter_generic.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) 1992-2013 jp.charras at wanadoo.fr
5  * Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
6  * Copyright (C) 1992-2018 KiCad Developers
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, you may find one here:
20  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21  * or you may search the http://www.gnu.org website for the version 2 license,
22  * or you may write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24  */
25 
26 #ifndef NETLIST_EXPORT_GENERIC_H
27 #define NETLIST_EXPORT_GENERIC_H
28 
29 #include <project.h>
30 #include <netlist_exporter.h>
31 
32 #include <xnode.h> // also nests: <wx/xml/xml.h>
33 
34 class SYMBOL_LIB_TABLE;
35 
36 #define GENERIC_INTERMEDIATE_NETLIST_EXT wxT( "xml" )
37 
42 enum GNL_T
43 {
44  GNL_LIBRARIES = 1 << 0,
45  GNL_COMPONENTS = 1 << 1,
46  GNL_PARTS = 1 << 2,
47  GNL_HEADER = 1 << 3,
48  GNL_NETS = 1 << 4,
49 };
50 
51 
58 {
59 private:
60  std::set< wxString > m_libraries;
61 
63 
64 public:
66  NETLIST_EXPORTER( aMasterList ),
67  m_libTable( aFrame->Prj().SchSymbolLibTable() )
68  {}
69 
74  bool WriteNetlist( const wxString& aOutFileName, unsigned aNetlistOptions ) override;
75 
76 #define GNL_ALL ( GNL_LIBRARIES | GNL_COMPONENTS | GNL_PARTS | GNL_HEADER | GNL_NETS )
77 
78 protected:
88  XNODE* node( const wxString& aName, const wxString& aTextualContent = wxEmptyString );
89 
98  XNODE* makeRoot( int aCtl = GNL_ALL );
99 
105 
112 
118  XNODE* makeLibParts();
119 
126 
133  XNODE* makeLibraries();
134 
135  void addComponentFields( XNODE* xcomp, SCH_COMPONENT* comp, SCH_SHEET_PATH* aSheet );
136 };
137 
138 #endif
bool WriteNetlist(const wxString &aOutFileName, unsigned aNetlistOptions) override
Function WriteNetlist writes to specified output file.
NETLIST_EXPORTER_GENERIC(SCH_EDIT_FRAME *aFrame, NETLIST_OBJECT_LIST *aMasterList)
XNODE * makeComponents()
Function makeComponents.
XNODE * node(const wxString &aName, const wxString &aTextualContent=wxEmptyString)
Function node is a convenience function that creates a new XNODE with an optional textual child...
PROJECT & Prj()
Definition: kicad.cpp:292
Schematic editor (Eeschema) main window.
Class NETLIST_OBJECT_LIST is a container holding and owning NETLIST_OBJECTs, which are connected item...
XNODE * makeRoot(int aCtl=GNL_ALL)
Function makeGenericRoot builds the entire document tree for the generic export.
std::set< wxString > m_libraries
Set of library nicknames.
Class NETLIST_EXPORTER is a abstract class used for the netlist exporters that eeschema supports...
GNL_T
Enum GNL is a set of bit which control the totality of the tree built by makeRoot() ...
void addComponentFields(XNODE *xcomp, SCH_COMPONENT *comp, SCH_SHEET_PATH *aSheet)
Class NETLIST_EXPORTER_GENERIC generates a generic XML based netlist file.
XNODE * makeDesignHeader()
Function makeDesignHeader fills out a project "design" header into an XML node.
Class SCH_SHEET_PATH.
Class XNODE holds an XML or S-expression element.
Definition: xnode.h:43
#define GNL_ALL
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
XNODE * makeLibraries()
Function makeLibraries fills out an XML node with a list of used libraries and returns it...
XNODE * makeListOfNets()
Function makeListOfNets fills out an XML node with a list of nets and returns it. ...
XNODE * makeLibParts()
Function makeLibParts fills out an XML node with the unique library parts and returns it...