KiCad PCB EDA Suite
Loading...
Searching...
No Matches
spice_generator.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) 2022 Mikolaj Wielgus
5 * Copyright (C) 2022-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 3
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * https://www.gnu.org/licenses/gpl-3.0.html
20 * or you may search the http://www.gnu.org website for the version 3 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef SPICE_GENERATOR_H
26#define SPICE_GENERATOR_H
27
28#include <sim/sim_model.h>
29
30class SCH_FIELD;
31
32
34{
35 std::string refName;
36 std::vector<std::string> pinNumbers;
37 std::vector<std::string> pinNetNames;
38 std::string baseModelName;
39 std::string modelName;
40 const SIM_MODEL* model = nullptr;
41 std::vector<SCH_FIELD> fields;
42};
43
44
46{
47public:
48
49 SPICE_GENERATOR( const SIM_MODEL& aModel ) : m_model( aModel ) {}
50 virtual ~SPICE_GENERATOR() = default;
51
52 virtual std::string ModelName( const SPICE_ITEM& aItem ) const;
53 virtual std::string ModelLine( const SPICE_ITEM& aItem ) const;
54
55 virtual std::string ItemLine( const SPICE_ITEM& aItem ) const;
56 virtual std::string ItemName( const SPICE_ITEM& aItem ) const;
57 virtual std::string ItemPins( const SPICE_ITEM& aItem ) const;
58 virtual std::string ItemModelName( const SPICE_ITEM& aItem ) const;
59 virtual std::string ItemParams() const;
60
61 virtual std::string TunerCommand( const SPICE_ITEM& aItem, double aValue ) const;
62
63 virtual std::vector<std::string> CurrentNames( const SPICE_ITEM& aItem ) const;
64
65 virtual std::string Preview( const SPICE_ITEM& aItem ) const;
66
67protected:
68 virtual std::vector<std::reference_wrapper<const SIM_MODEL::PIN>> GetPins() const
69 {
70 return m_model.GetPins();
71 }
72
73 virtual std::vector<std::reference_wrapper<const SIM_MODEL::PARAM>> GetInstanceParams() const;
74
76};
77
78#endif // SPICE_GENERATOR_H
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:51
std::vector< std::reference_wrapper< const PIN > > GetPins() const
Definition: sim_model.cpp:739
virtual std::string ItemName(const SPICE_ITEM &aItem) const
virtual std::vector< std::reference_wrapper< const SIM_MODEL::PARAM > > GetInstanceParams() const
virtual std::string ItemPins(const SPICE_ITEM &aItem) const
virtual std::string ItemLine(const SPICE_ITEM &aItem) const
virtual std::string ModelLine(const SPICE_ITEM &aItem) const
virtual std::vector< std::reference_wrapper< const SIM_MODEL::PIN > > GetPins() const
virtual std::string ItemParams() const
const SIM_MODEL & m_model
SPICE_GENERATOR(const SIM_MODEL &aModel)
virtual std::string Preview(const SPICE_ITEM &aItem) const
virtual std::string ItemModelName(const SPICE_ITEM &aItem) const
virtual std::string TunerCommand(const SPICE_ITEM &aItem, double aValue) const
virtual ~SPICE_GENERATOR()=default
virtual std::string ModelName(const SPICE_ITEM &aItem) const
virtual std::vector< std::string > CurrentNames(const SPICE_ITEM &aItem) const
std::string refName
std::vector< SCH_FIELD > fields
std::string modelName
const SIM_MODEL * model
std::vector< std::string > pinNetNames
std::string baseModelName
std::vector< std::string > pinNumbers