ComponentKind = enum ckPwr, ckConnInput, ckConnOutput, ckConnPot, ckConnSPST, ckConnSPNT, ckRes, ckCap, ckCapP, ckInductor, ckDiode, ckDiodeZ, # ckTransistorN, # ckTransistorP, # add back once i figure out all the relevant parameters to solve for ckOpamp, ckOTA, ckSPST, ckSPNT ComponentVariant = object case kind: ComponentKind: of ckPwr: infoPwrVoltage: float connectPwr: int of ckConnInput: infoInVoltage: float connectInput: int of ckConnOutput: infoOutput: float connectOutput: int of ckConnPot: infoPotTurn: float connectPot: array[3, int] of ckConnSPST: infoConnSwitchOnOff: bool connectConnSPST: array[3, int] of ckConnSPNT: infoConnSPNTPos: int infoConnSPNTStates: int connectConnSPNT: seq[int] of ckRes: varResistance: float connectRes: array[2, int] of ckCap: varCapacitance: float connectCap: array[2, int] of ckCapP: varCapacitanceP: float connectCapP: array[2, int] of ckInductor: varInductance: float connectInductor: array[2, int] of ckDiode: connectDiode: array[2, int] of ckDiodeZ: varZenerVoltage: float connectDiodeZ: array[2, int] # of ckTransistorN: # infoTransistorModelN: string # of ckTransistorP: # infoTransistorModelP: string of ckOpamp: infoOpampModel: string connectOpamp: array[3, int] of ckOTA: infoOTAModel: string connectOTA: array[5, int] of ckSPST: connectSPST: array[3, int] of ckSPNT: infoSPNTStates: int connectSPNT: seq[int]