evcc-io/cmd/tools/decorate_decorators.go
2024-09-08 19:28:38 +02:00

111 lines
2.5 KiB
Go

package main
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"github.com/evcc-io/evcc/api"
)
func decorateTest(base api.Charger, meterEnergy func() (float64, error), phaseSwitcher func(int) error, phaseGetter func() (int, error)) api.Charger {
switch {
case meterEnergy == nil && phaseSwitcher == nil:
return base
case meterEnergy != nil && phaseSwitcher == nil:
return &struct {
api.Charger
api.MeterEnergy
}{
Charger: base,
MeterEnergy: &decorateTestMeterEnergyImpl{
meterEnergy: meterEnergy,
},
}
case meterEnergy == nil && phaseGetter == nil && phaseSwitcher != nil:
return &struct {
api.Charger
api.PhaseSwitcher
}{
Charger: base,
PhaseSwitcher: &decorateTestPhaseSwitcherImpl{
phaseSwitcher: phaseSwitcher,
},
}
case meterEnergy != nil && phaseGetter == nil && phaseSwitcher != nil:
return &struct {
api.Charger
api.MeterEnergy
api.PhaseSwitcher
}{
Charger: base,
MeterEnergy: &decorateTestMeterEnergyImpl{
meterEnergy: meterEnergy,
},
PhaseSwitcher: &decorateTestPhaseSwitcherImpl{
phaseSwitcher: phaseSwitcher,
},
}
case meterEnergy == nil && phaseGetter != nil && phaseSwitcher != nil:
return &struct {
api.Charger
api.PhaseGetter
api.PhaseSwitcher
}{
Charger: base,
PhaseGetter: &decorateTestPhaseGetterImpl{
phaseGetter: phaseGetter,
},
PhaseSwitcher: &decorateTestPhaseSwitcherImpl{
phaseSwitcher: phaseSwitcher,
},
}
case meterEnergy != nil && phaseGetter != nil && phaseSwitcher != nil:
return &struct {
api.Charger
api.MeterEnergy
api.PhaseGetter
api.PhaseSwitcher
}{
Charger: base,
MeterEnergy: &decorateTestMeterEnergyImpl{
meterEnergy: meterEnergy,
},
PhaseGetter: &decorateTestPhaseGetterImpl{
phaseGetter: phaseGetter,
},
PhaseSwitcher: &decorateTestPhaseSwitcherImpl{
phaseSwitcher: phaseSwitcher,
},
}
}
return nil
}
type decorateTestMeterEnergyImpl struct {
meterEnergy func() (float64, error)
}
func (impl *decorateTestMeterEnergyImpl) TotalEnergy() (float64, error) {
return impl.meterEnergy()
}
type decorateTestPhaseGetterImpl struct {
phaseGetter func() (int, error)
}
func (impl *decorateTestPhaseGetterImpl) GetPhases() (int, error) {
return impl.phaseGetter()
}
type decorateTestPhaseSwitcherImpl struct {
phaseSwitcher func(int) error
}
func (impl *decorateTestPhaseSwitcherImpl) Phases1p3p(p0 int) error {
return impl.phaseSwitcher(p0)
}