KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sim_model_raw_spice.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 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 SIM_MODEL_RAW_SPICE_H
26#define SIM_MODEL_RAW_SPICE_H
27
28#include <sim/sim_model_spice.h>
29#include <sim/spice_generator.h>
30
31
33{
34public:
36
37 std::string ModelLine( const SPICE_ITEM& aItem ) const override;
38
39 std::string ItemName( const SPICE_ITEM& aItem ) const override;
40 std::string ItemPins( const SPICE_ITEM& aItem ) const override;
41 std::string ItemModelName( const SPICE_ITEM& aItem ) const override;
42 std::string ItemParams() const override;
43
44 std::string Preview( const SPICE_ITEM& aItem ) const override;
45};
46
47
49{
50public:
52
54 TYPE,
55 MODEL,
56 LIB
57 )
58
59 SIM_MODEL_RAW_SPICE( const std::string& aSpiceSource = "" );
60
61 void SetSource( const std::string& aSpiceSource ) { m_spiceCode = aSpiceSource; }
62
63 std::string GetSource() const
64 {
65 if( m_baseModel )
66 return static_cast<const SIM_MODEL_RAW_SPICE*>( m_baseModel )->GetSource();
67
68 return m_spiceCode;
69 }
70
71 void SetPinSymbolPinNumber( const std::string& aPinName,
72 const std::string& aSymbolPinNumber ) override;
73
74private:
75 static std::vector<PARAM::INFO> makeParamInfos();
76 bool requiresSpiceModelLine( const SPICE_ITEM& aItem ) const override { return false; }
77
78private:
79 std::string m_spiceCode;
80};
81
82#endif // SIM_MODEL_RAW_SPICE_H
void SetPinSymbolPinNumber(const std::string &aPinName, const std::string &aSymbolPinNumber) override
std::string GetSource() const
DEFINE_ENUM_CLASS_WITH_ITERATOR(SPICE_PARAM, TYPE, MODEL, LIB) SIM_MODEL_RAW_SPICE(const std void SetSource(const std::string &aSpiceSource)
static std::vector< PARAM::INFO > makeParamInfos()
bool requiresSpiceModelLine(const SPICE_ITEM &aItem) const override
const SIM_MODEL * m_baseModel
Definition: sim_model.h:543
std::string ModelLine(const SPICE_ITEM &aItem) const override
std::string ItemPins(const SPICE_ITEM &aItem) const override
std::string ItemModelName(const SPICE_ITEM &aItem) const override
std::string ItemParams() const override
std::string Preview(const SPICE_ITEM &aItem) const override
std::string ItemName(const SPICE_ITEM &aItem) const override
SPICE_GENERATOR(const SIM_MODEL &aModel)
#define DEFINE_ENUM_CLASS_WITH_ITERATOR(enumName, beginVal,...)
Macro to create const vectors containing enum class values to enable easy iteration.
Definition: enum_vector.h:67
SIM_MODEL::TYPE TYPE
Definition: sim_model.cpp:53