Skip to content

Commit f470714

Browse files
Better idea
1 parent b1839a8 commit f470714

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

src/SpiceSharpParser/ModelReaders/Netlist/Spice/Readers/EntityGenerators/Models/MosfetModelGenerator.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
22
using System.Collections.Generic;
33
using SpiceSharp.Components;
4+
using SpiceSharp.Components.Mosfets;
5+
using SpiceSharp.Entities;
46
using SpiceSharpParser.Common.Validation;
57
using SpiceSharpParser.ModelReaders.Netlist.Spice.Context;
68
using SpiceSharpParser.Models.Netlist.Spice.Objects;
@@ -56,9 +58,20 @@ public MosfetModelGenerator()
5658
/// </summary>
5759
protected static Dictionary<int, Func<string, string, string, Context.Models.Model>> Levels { get; } = new Dictionary<int, Func<string, string, string, Context.Models.Model>>();
5860

59-
public static void AddLevel(int level, Func<string, string, string, Context.Models.Model> generator)
61+
public static void AddLevel<TModel>(int level)
62+
where TModel : Entity<Parameters>
6063
{
61-
Levels[level] = generator;
64+
Levels[level] = (name, type, _) =>
65+
{
66+
var mosfet = (TModel)Activator.CreateInstance(typeof(TModel), name);
67+
switch (type.ToLower())
68+
{
69+
case "nmos": mosfet.SetParameter("nmos", true); break;
70+
case "pmos": mosfet.SetParameter("pmos", true); break;
71+
}
72+
73+
return new Context.Models.Model(name, mosfet, mosfet.Parameters);
74+
};
6275
}
6376

6477
public override Context.Models.Model Generate(string id, string type, ParameterCollection parameters, IReadingContext context)

0 commit comments

Comments
 (0)