-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcutoff_frequency_param.go
More file actions
62 lines (54 loc) · 1.25 KB
/
cutoff_frequency_param.go
File metadata and controls
62 lines (54 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package picker
import (
"reflect"
"encoding/json"
"github.com/chanced/dynamic"
)
type WithCutoffFrequency interface {
CutoffFrequency() dynamic.Number
SetCutoffFreuency(dynamic.Number)
}
type cutoffFrequencyParam struct {
cutoffFrequency dynamic.Number
}
func (cf cutoffFrequencyParam) CutoffFrequency() dynamic.Number {
return cf.cutoffFrequency
}
func (cf *cutoffFrequencyParam) SetCutoffFreuency(n dynamic.Number) {
cf.cutoffFrequency = n
}
func unmarshalCutoffFrequencyParam(data dynamic.JSON, target interface{}) error {
if a, ok := target.(WithCutoffFrequency); ok {
var str string
var err error
switch {
case data.IsNull():
case data.IsString():
err = json.Unmarshal(data, &str)
case data.IsNumber():
str = data.UnquotedString()
default:
err = &json.UnmarshalTypeError{
Value: string(data),
Type: reflect.TypeOf(dynamic.Number{}),
}
}
if err != nil {
return err
}
n, err := dynamic.NewNumber(str)
if err != nil {
return err
}
a.SetCutoffFreuency(n)
}
return nil
}
func marshalCutoffFrequencyParam(source interface{}) (dynamic.JSON, error) {
if p, ok := source.(WithCutoffFrequency); ok {
if p.CutoffFrequency().HasValue() {
return json.Marshal(p.CutoffFrequency())
}
}
return nil, nil
}