KiCad PCB EDA Suite
netlist_exporter_xml.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 <[email protected]>
6 * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
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_XML_H
27#define NETLIST_EXPORT_XML_H
28
30
31#include <project.h>
32
33#include <sch_edit_frame.h>
34
37class XNODE;
38
39#define GENERIC_INTERMEDIATE_NETLIST_EXT wxT( "xml" )
40
45{
46 GNL_LIBRARIES = 1 << 0,
47 GNL_SYMBOLS = 1 << 1,
48 GNL_PARTS = 1 << 2,
49 GNL_HEADER = 1 << 3,
50 GNL_NETS = 1 << 4,
51 GNL_OPT_KICAD = 1 << 5,
52 GNL_OPT_BOM = 1 << 6,
53};
54
55
63{
64public:
66 NETLIST_EXPORTER_BASE( aSchematic ),
67 m_resolveTextVars( true )
68 {}
69
78 bool WriteNetlist( const wxString& aOutFileName, unsigned aNetlistOptions ) override;
79
80#define GNL_ALL ( GNL_LIBRARIES | GNL_SYMBOLS | GNL_PARTS | GNL_HEADER | GNL_NETS )
81
82protected:
91 XNODE* node( const wxString& aName, const wxString& aTextualContent = wxEmptyString );
92
100 XNODE* makeRoot( unsigned aCtl = GNL_ALL );
101
105 XNODE* makeSymbols( unsigned aCtl );
106
112
118
123 XNODE* makeListOfNets( unsigned aCtl );
124
131
132 void addSymbolFields( XNODE* aNode, SCH_SYMBOL* aSymbol, SCH_SHEET_PATH* aSheet );
133
134 bool m_resolveTextVars; // Export textVar references resolved
135
136private:
137 std::set<wxString> m_libraries; // Set of library nicknames.
138};
139
140#endif
Calculates the connectivity of a schematic and generates netlists.
An abstract class used for the netlist exporters that Eeschema supports.
Generate a generic XML based netlist file.
bool WriteNetlist(const wxString &aOutFileName, unsigned aNetlistOptions) override
Write generic netlist to aOutFileName.
XNODE * makeDesignHeader()
Fill out a project "design" header into an XML node.
NETLIST_EXPORTER_XML(SCHEMATIC *aSchematic)
XNODE * makeLibraries()
Fill out an XML node with a list of used libraries and returns it.
XNODE * node(const wxString &aName, const wxString &aTextualContent=wxEmptyString)
A convenience function that creates a new XNODE with an optional textual child.
XNODE * makeListOfNets(unsigned aCtl)
Fill out an XML node with a list of nets and returns it.
XNODE * makeSymbols(unsigned aCtl)
XNODE * makeRoot(unsigned aCtl=GNL_ALL)
Build the entire document tree for the generic export.
void addSymbolFields(XNODE *aNode, SCH_SYMBOL *aSymbol, SCH_SHEET_PATH *aSheet)
Holder for multi-unit symbol fields.
std::set< wxString > m_libraries
XNODE * makeLibParts()
Fill out an XML node with the unique library parts and returns it.
Holds all the data relating to one schematic.
Definition: schematic.h:60
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Schematic symbol object.
Definition: sch_symbol.h:79
Hold an XML or S-expression element.
Definition: xnode.h:44
#define GNL_ALL
GNL_T
A set of bits which control the totality of the tree built by makeRoot()
@ GNL_PARTS
@ GNL_LIBRARIES
@ GNL_OPT_KICAD
@ GNL_SYMBOLS
@ GNL_HEADER
@ GNL_OPT_BOM
@ GNL_NETS