package charger // Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT. import ( "github.com/evcc-io/evcc/api" ) func decorateBenderCC(base *BenderCC, meter func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), meterEnergy func() (float64, error), battery func() (float64, error), identifier func() (string, error)) api.Charger { switch { case battery == nil && identifier == nil && meter == nil: return base case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, } case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter api.PhaseCurrents }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter api.PhaseVoltages }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery == nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter api.MeterEnergy }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Meter api.MeterEnergy api.PhaseCurrents }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter api.MeterEnergy api.PhaseVoltages }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery == nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Meter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier == nil && meter == nil: return &struct { *BenderCC api.Battery }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Meter }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Meter api.PhaseCurrents }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Meter api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Meter api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Meter api.MeterEnergy }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Meter api.MeterEnergy api.PhaseCurrents }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Meter api.MeterEnergy api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier == nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Meter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery == nil && identifier != nil && meter == nil: return &struct { *BenderCC api.Identifier }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier api.Meter }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier api.Meter api.PhaseCurrents }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier api.Meter api.PhaseVoltages }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier api.Meter api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier api.Meter api.MeterEnergy }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Identifier api.Meter api.MeterEnergy api.PhaseCurrents }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier api.Meter api.MeterEnergy api.PhaseVoltages }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery == nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Identifier api.Meter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier != nil && meter == nil: return &struct { *BenderCC api.Battery api.Identifier }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter api.PhaseCurrents }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy == nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter api.MeterEnergy }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages == nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter api.MeterEnergy api.PhaseCurrents }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter api.MeterEnergy api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case battery != nil && identifier != nil && meter != nil && meterEnergy != nil && phaseCurrents != nil && phaseVoltages != nil: return &struct { *BenderCC api.Battery api.Identifier api.Meter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages }{ BenderCC: base, Battery: &decorateBenderCCBatteryImpl{ battery: battery, }, Identifier: &decorateBenderCCIdentifierImpl{ identifier: identifier, }, Meter: &decorateBenderCCMeterImpl{ meter: meter, }, MeterEnergy: &decorateBenderCCMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateBenderCCPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateBenderCCPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } } return nil } type decorateBenderCCBatteryImpl struct { battery func() (float64, error) } func (impl *decorateBenderCCBatteryImpl) Soc() (float64, error) { return impl.battery() } type decorateBenderCCIdentifierImpl struct { identifier func() (string, error) } func (impl *decorateBenderCCIdentifierImpl) Identify() (string, error) { return impl.identifier() } type decorateBenderCCMeterImpl struct { meter func() (float64, error) } func (impl *decorateBenderCCMeterImpl) CurrentPower() (float64, error) { return impl.meter() } type decorateBenderCCMeterEnergyImpl struct { meterEnergy func() (float64, error) } func (impl *decorateBenderCCMeterEnergyImpl) TotalEnergy() (float64, error) { return impl.meterEnergy() } type decorateBenderCCPhaseCurrentsImpl struct { phaseCurrents func() (float64, float64, float64, error) } func (impl *decorateBenderCCPhaseCurrentsImpl) Currents() (float64, float64, float64, error) { return impl.phaseCurrents() } type decorateBenderCCPhaseVoltagesImpl struct { phaseVoltages func() (float64, float64, float64, error) } func (impl *decorateBenderCCPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) { return impl.phaseVoltages() }