28#include <boost/algorithm/string/predicate.hpp>
30#include <pegtl/contrib/parse_tree.hpp>
52 if( aItem.
refName !=
"" && boost::starts_with( aItem.
refName, type ) )
55 return fmt::format(
"{}{}", type, aItem.
refName );
69 pin.symbolPinNumber );
73 long symbolPinIndex = std::distance( aItem.
pinNumbers.begin(), it );
74 result.append( fmt::format(
" {}", aItem.
pinNetNames.at( symbolPinIndex ) ) );
78 result.append( fmt::format(
" NC-{}-{}", aItem.
refName, ncCounter++ ) );
86 for(
const std::string& pinNetName : aItem.
pinNetNames )
87 result.append( fmt::format(
" {}", pinNetName ) );
106 if(
param.info.name ==
"model" )
121 item.
pinNumbers.push_back( fmt::format(
"{}", i + 1 ) );
122 item.
pinNetNames.push_back( fmt::format(
"{}", i + 1 ) );
131 m_spiceCode( aSpiceSource )
143 const std::string& aSymbolPinNumber )
147 if(
pin.name == aPinName )
149 pin.symbolPinNumber = aSymbolPinNumber;
154 m_pins.push_back( { aPinName, aSymbolPinNumber } );
160 std::vector<PARAM::INFO> paramInfos;
162 for( SPICE_PARAM spiceParam : SPICE_PARAM_ITERATOR() )
168 case SPICE_PARAM::TYPE:
169 paramInfo.
name =
"type";
177 paramInfos.push_back( paramInfo );
180 case SPICE_PARAM::MODEL:
181 paramInfo.
name =
"model";
189 paramInfos.push_back( paramInfo );
192 case SPICE_PARAM::LIB:
193 paramInfo.
name =
"lib";
201 paramInfos.push_back( paramInfo );
204 case SPICE_PARAM::_ENUM_END:
void SetPinSymbolPinNumber(const std::string &aPinName, const std::string &aSymbolPinNumber) override
static std::vector< PARAM::INFO > makeParamInfos()
SIM_MODEL_RAW_SPICE(const std::string &aSpiceSource="")
void AddParam(const PARAM::INFO &aInfo)
std::vector< PIN > m_pins
virtual const PARAM & GetParam(unsigned aParamIndex) const
void SetParamValue(int aParamIndex, const std::string &aValue, SIM_VALUE::NOTATION aNotation=SIM_VALUE::NOTATION::SI)
static std::string ToSpice(const std::string &aString)
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
virtual std::vector< std::reference_wrapper< const SIM_MODEL::PARAM > > GetInstanceParams() const
virtual std::string ItemLine(const SPICE_ITEM &aItem) const
virtual std::vector< std::reference_wrapper< const SIM_MODEL::PIN > > GetPins() const
const SIM_MODEL & m_model
static bool empty(const wxTextEntryBase *aCtrl)
bool isSpiceInstanceParam
std::vector< std::string > pinNetNames
std::vector< std::string > pinNumbers