package meter // Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT. import ( "github.com/evcc-io/evcc/api" ) func decorateMeter(base api.Meter, meterEnergy func() (float64, error), phaseCurrents func() (float64, float64, float64, error), phaseVoltages func() (float64, float64, float64, error), phasePowers func() (float64, float64, float64, error), maxACPowerGetter func() float64) api.Meter { switch { case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return base case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.MeterEnergy }{ Meter: base, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.PhaseCurrents }{ Meter: base, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.MeterEnergy api.PhaseCurrents }{ Meter: base, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.PhaseVoltages }{ Meter: base, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.MeterEnergy api.PhaseVoltages }{ Meter: base, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.PhaseCurrents api.PhaseVoltages }{ Meter: base, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages }{ Meter: base, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.PhaseCurrents api.PhasePowers }{ Meter: base, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, } case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.MeterEnergy api.PhaseCurrents api.PhasePowers }{ Meter: base, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, } case maxACPowerGetter == nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.PhaseCurrents api.PhasePowers api.PhaseVoltages }{ Meter: base, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter == nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.MeterEnergy api.PhaseCurrents api.PhasePowers api.PhaseVoltages }{ Meter: base, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.MaxACPowerGetter }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, } case maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages == nil: return &struct { api.Meter api.MaxACPowerGetter api.MeterEnergy }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.MaxACPowerGetter api.PhaseCurrents }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages == nil: return &struct { api.Meter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, } case maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.MaxACPowerGetter api.PhaseVoltages }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents == nil && phaseVoltages != nil: return &struct { api.Meter api.MaxACPowerGetter api.MeterEnergy api.PhaseVoltages }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.MaxACPowerGetter api.PhaseCurrents api.PhaseVoltages }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers == nil && phaseVoltages != nil: return &struct { api.Meter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents api.PhaseVoltages }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, } case maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages == nil: return &struct { api.Meter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents api.PhasePowers }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, } case maxACPowerGetter != nil && meterEnergy == nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.MaxACPowerGetter api.PhaseCurrents api.PhasePowers api.PhaseVoltages }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } case maxACPowerGetter != nil && meterEnergy != nil && phaseCurrents != nil && phasePowers != nil && phaseVoltages != nil: return &struct { api.Meter api.MaxACPowerGetter api.MeterEnergy api.PhaseCurrents api.PhasePowers api.PhaseVoltages }{ Meter: base, MaxACPowerGetter: &decorateMeterMaxACPowerGetterImpl{ maxACPowerGetter: maxACPowerGetter, }, MeterEnergy: &decorateMeterMeterEnergyImpl{ meterEnergy: meterEnergy, }, PhaseCurrents: &decorateMeterPhaseCurrentsImpl{ phaseCurrents: phaseCurrents, }, PhasePowers: &decorateMeterPhasePowersImpl{ phasePowers: phasePowers, }, PhaseVoltages: &decorateMeterPhaseVoltagesImpl{ phaseVoltages: phaseVoltages, }, } } return nil } type decorateMeterMaxACPowerGetterImpl struct { maxACPowerGetter func() float64 } func (impl *decorateMeterMaxACPowerGetterImpl) MaxACPower() float64 { return impl.maxACPowerGetter() } type decorateMeterMeterEnergyImpl struct { meterEnergy func() (float64, error) } func (impl *decorateMeterMeterEnergyImpl) TotalEnergy() (float64, error) { return impl.meterEnergy() } type decorateMeterPhaseCurrentsImpl struct { phaseCurrents func() (float64, float64, float64, error) } func (impl *decorateMeterPhaseCurrentsImpl) Currents() (float64, float64, float64, error) { return impl.phaseCurrents() } type decorateMeterPhasePowersImpl struct { phasePowers func() (float64, float64, float64, error) } func (impl *decorateMeterPhasePowersImpl) Powers() (float64, float64, float64, error) { return impl.phasePowers() } type decorateMeterPhaseVoltagesImpl struct { phaseVoltages func() (float64, float64, float64, error) } func (impl *decorateMeterPhaseVoltagesImpl) Voltages() (float64, float64, float64, error) { return impl.phaseVoltages() } func decorateMeterBattery(base api.Meter, meterEnergy func() (float64, error), battery func() (float64, error), batteryCapacity func() float64, batterySocLimiter func() (float64, float64), batteryPowerLimiter func() (float64, float64), batteryController func(api.BatteryMode) error) api.Meter { switch { case battery == nil && meterEnergy == nil: return base case battery == nil && meterEnergy != nil: return &struct { api.Meter api.MeterEnergy }{ Meter: base, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryPowerLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryPowerLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryPowerLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryPowerLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryPowerLimiter api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity == nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryPowerLimiter api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryPowerLimiter api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity != nil && batteryController == nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryPowerLimiter api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryController }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryController api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryController api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryController api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter == nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryController api.BatteryPowerLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryController api.BatteryPowerLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController api.BatteryPowerLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter == nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController api.BatteryPowerLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryController api.BatteryPowerLimiter api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity == nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryController api.BatteryPowerLimiter api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy == nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController api.BatteryPowerLimiter api.BatterySocLimiter }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, } case battery != nil && batteryCapacity != nil && batteryController != nil && batteryPowerLimiter != nil && batterySocLimiter != nil && meterEnergy != nil: return &struct { api.Meter api.Battery api.BatteryCapacity api.BatteryController api.BatteryPowerLimiter api.BatterySocLimiter api.MeterEnergy }{ Meter: base, Battery: &decorateMeterBatteryBatteryImpl{ battery: battery, }, BatteryCapacity: &decorateMeterBatteryBatteryCapacityImpl{ batteryCapacity: batteryCapacity, }, BatteryController: &decorateMeterBatteryBatteryControllerImpl{ batteryController: batteryController, }, BatteryPowerLimiter: &decorateMeterBatteryBatteryPowerLimiterImpl{ batteryPowerLimiter: batteryPowerLimiter, }, BatterySocLimiter: &decorateMeterBatteryBatterySocLimiterImpl{ batterySocLimiter: batterySocLimiter, }, MeterEnergy: &decorateMeterBatteryMeterEnergyImpl{ meterEnergy: meterEnergy, }, } } return nil } type decorateMeterBatteryBatteryImpl struct { battery func() (float64, error) } func (impl *decorateMeterBatteryBatteryImpl) Soc() (float64, error) { return impl.battery() } type decorateMeterBatteryBatteryCapacityImpl struct { batteryCapacity func() float64 } func (impl *decorateMeterBatteryBatteryCapacityImpl) Capacity() float64 { return impl.batteryCapacity() } type decorateMeterBatteryBatteryControllerImpl struct { batteryController func(api.BatteryMode) error } func (impl *decorateMeterBatteryBatteryControllerImpl) SetBatteryMode(p0 api.BatteryMode) error { return impl.batteryController(p0) } type decorateMeterBatteryBatteryPowerLimiterImpl struct { batteryPowerLimiter func() (float64, float64) } func (impl *decorateMeterBatteryBatteryPowerLimiterImpl) GetPowerLimits() (float64, float64) { return impl.batteryPowerLimiter() } type decorateMeterBatteryBatterySocLimiterImpl struct { batterySocLimiter func() (float64, float64) } func (impl *decorateMeterBatteryBatterySocLimiterImpl) GetSocLimits() (float64, float64) { return impl.batterySocLimiter() } type decorateMeterBatteryMeterEnergyImpl struct { meterEnergy func() (float64, error) } func (impl *decorateMeterBatteryMeterEnergyImpl) TotalEnergy() (float64, error) { return impl.meterEnergy() }