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 <dick@softplc.com>
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 
29 #include <netlist_exporter_base.h>
30 
31 #include <project.h>
32 
33 #include <sch_edit_frame.h>
34 
35 class CONNECTION_GRAPH;
36 class SYMBOL_LIB_TABLE;
37 class XNODE;
38 
39 #define GENERIC_INTERMEDIATE_NETLIST_EXT wxT( "xml" )
40 
44 enum GNL_T
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 {
64 public:
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 
82 protected:
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 
117  XNODE* makeLibParts();
118 
123  XNODE* makeListOfNets( unsigned aCtl );
124 
130  XNODE* makeLibraries();
131 
132  void addSymbolFields( XNODE* aNode, SCH_SYMBOL* aSymbol, SCH_SHEET_PATH* aSheet );
133 
134  bool m_resolveTextVars; // Export textVar references resolved
135 
136 private:
137  std::set<wxString> m_libraries; // Set of library nicknames.
138 };
139 
140 #endif
Holds all the data relating to one schematic.
Definition: schematic.h:59
Calculates the connectivity of a schematic and generates netlists.
XNODE * makeRoot(unsigned aCtl=GNL_ALL)
Build the entire document tree for the generic export.
XNODE * makeLibParts()
Fill out an XML node with the unique library parts 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.
NETLIST_EXPORTER_XML(SCHEMATIC *aSchematic)
#define GNL_ALL
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
An abstract class used for the netlist exporters that Eeschema supports.
Hold an XML or S-expression element.
Definition: xnode.h:43
void addSymbolFields(XNODE *aNode, SCH_SYMBOL *aSymbol, SCH_SHEET_PATH *aSheet)
Holder for multi-unit symbol fields.
std::set< wxString > m_libraries
XNODE * makeSymbols(unsigned aCtl)
Schematic symbol object.
Definition: sch_symbol.h:78
GNL_T
A set of bits which control the totality of the tree built by makeRoot()
bool WriteNetlist(const wxString &aOutFileName, unsigned aNetlistOptions) override
Write generic netlist to aOutFileName.
Generate a generic XML based netlist file.
XNODE * makeLibraries()
Fill out an XML node with a list of used libraries and returns it.
XNODE * makeDesignHeader()
Fill out a project "design" header into an XML node.