From 70b4d1aac823ed40da2706d56b80919748f103a8 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Fri, 28 Oct 2022 14:29:32 +0200 Subject: [PATCH] Commit sim_model_diode.{cpp,h} --- eeschema/sim/sim_model_diode.cpp | 50 ++++++++++++++++++++++++++++++++ eeschema/sim/sim_model_diode.h | 47 ++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 eeschema/sim/sim_model_diode.cpp create mode 100644 eeschema/sim/sim_model_diode.h diff --git a/eeschema/sim/sim_model_diode.cpp b/eeschema/sim/sim_model_diode.cpp new file mode 100644 index 0000000000..48e6401ec1 --- /dev/null +++ b/eeschema/sim/sim_model_diode.cpp @@ -0,0 +1,50 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2022 Mikolaj Wielgus + * Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * https://www.gnu.org/licenses/gpl-3.0.html + * or you may search the http://www.gnu.org website for the version 3 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + + +std::string SPICE_GENERATOR_DIODE::ItemLine( const SPICE_ITEM& aItem ) const +{ + SPICE_ITEM item = aItem; + + // FIXME: This `if` is there because Preview() calls this function with empty pinNetNames vector. + // This shouldn't be necessary. + if( item.pinNetNames.size() >= 2 ) + std::swap( item.pinNetNames.at( 0 ), item.pinNetNames.at( 1 ) ); + + return SPICE_GENERATOR::ItemLine( item ); +} + + +std::vector SPICE_GENERATOR_DIODE::CurrentNames( const SPICE_ITEM& aItem ) const +{ + return SPICE_GENERATOR::CurrentNames( aItem ); // NOLINT +} + + +SIM_MODEL_DIODE::SIM_MODEL_DIODE() : + SIM_MODEL_NGSPICE( TYPE::D, std::make_unique( *this ) ) +{ +} diff --git a/eeschema/sim/sim_model_diode.h b/eeschema/sim/sim_model_diode.h new file mode 100644 index 0000000000..911947b5b2 --- /dev/null +++ b/eeschema/sim/sim_model_diode.h @@ -0,0 +1,47 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2022 Mikolaj Wielgus + * Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * https://www.gnu.org/licenses/gpl-3.0.html + * or you may search the http://www.gnu.org website for the version 3 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef SIM_MODEL_DIODE_H +#define SIM_MODEL_DIODE_H + +#include + + +class SPICE_GENERATOR_DIODE : public SPICE_GENERATOR_NGSPICE +{ +public: + using SPICE_GENERATOR_NGSPICE::SPICE_GENERATOR_NGSPICE; + + std::string ItemLine( const SPICE_ITEM& aItem ) const override; + std::vector CurrentNames( const SPICE_ITEM& aItem ) const override; +}; + + +class SIM_MODEL_DIODE : public SIM_MODEL_NGSPICE +{ +public: + SIM_MODEL_DIODE(); +}; + +#endif // SIM_MODEL_DIODE_H