diff --git a/common/atomic/enum.go b/common/atomic/enum.go index 9b73c6d8..6843aee1 100644 --- a/common/atomic/enum.go +++ b/common/atomic/enum.go @@ -23,6 +23,19 @@ func (i *Int32Enum[T]) UnmarshalJSON(b []byte) error { return nil } +func (i *Int32Enum[T]) MarshalYAML() (any, error) { + return i.Load(), nil +} + +func (i *Int32Enum[T]) UnmarshalYAML(unmarshal func(any) error) error { + var v T + if err := unmarshal(&v); err != nil { + return err + } + i.Store(v) + return nil +} + func (i *Int32Enum[T]) String() string { return fmt.Sprint(i.Load()) } diff --git a/common/atomic/type.go b/common/atomic/type.go index 71695c63..12ae4cff 100644 --- a/common/atomic/type.go +++ b/common/atomic/type.go @@ -29,6 +29,19 @@ func (i *Bool) UnmarshalJSON(b []byte) error { return nil } +func (i *Bool) MarshalYAML() (any, error) { + return i.Load(), nil +} + +func (i *Bool) UnmarshalYAML(unmarshal func(any) error) error { + var v bool + if err := unmarshal(&v); err != nil { + return err + } + i.Store(v) + return nil +} + func (i *Bool) String() string { v := i.Load() return strconv.FormatBool(v) @@ -58,6 +71,19 @@ func (p *Pointer[T]) UnmarshalJSON(b []byte) error { return nil } +func (p *Pointer[T]) MarshalYAML() (any, error) { + return p.Load(), nil +} + +func (p *Pointer[T]) UnmarshalYAML(unmarshal func(any) error) error { + var v *T + if err := unmarshal(&v); err != nil { + return err + } + p.Store(v) + return nil +} + func (p *Pointer[T]) String() string { return fmt.Sprint(p.Load()) } @@ -84,6 +110,19 @@ func (i *Int32) UnmarshalJSON(b []byte) error { return nil } +func (i *Int32) MarshalYAML() (any, error) { + return i.Load(), nil +} + +func (i *Int32) UnmarshalYAML(unmarshal func(any) error) error { + var v int32 + if err := unmarshal(&v); err != nil { + return err + } + i.Store(v) + return nil +} + func (i *Int32) String() string { v := i.Load() return strconv.FormatInt(int64(v), 10) @@ -111,6 +150,19 @@ func (i *Int64) UnmarshalJSON(b []byte) error { return nil } +func (i *Int64) MarshalYAML() (any, error) { + return i.Load(), nil +} + +func (i *Int64) UnmarshalYAML(unmarshal func(any) error) error { + var v int64 + if err := unmarshal(&v); err != nil { + return err + } + i.Store(v) + return nil +} + func (i *Int64) String() string { v := i.Load() return strconv.FormatInt(int64(v), 10) @@ -138,6 +190,19 @@ func (i *Uint32) UnmarshalJSON(b []byte) error { return nil } +func (i *Uint32) MarshalYAML() (any, error) { + return i.Load(), nil +} + +func (i *Uint32) UnmarshalYAML(unmarshal func(any) error) error { + var v uint32 + if err := unmarshal(&v); err != nil { + return err + } + i.Store(v) + return nil +} + func (i *Uint32) String() string { v := i.Load() return strconv.FormatUint(uint64(v), 10) @@ -165,6 +230,19 @@ func (i *Uint64) UnmarshalJSON(b []byte) error { return nil } +func (i *Uint64) MarshalYAML() (any, error) { + return i.Load(), nil +} + +func (i *Uint64) UnmarshalYAML(unmarshal func(any) error) error { + var v uint64 + if err := unmarshal(&v); err != nil { + return err + } + i.Store(v) + return nil +} + func (i *Uint64) String() string { v := i.Load() return strconv.FormatUint(uint64(v), 10) @@ -192,6 +270,19 @@ func (i *Uintptr) UnmarshalJSON(b []byte) error { return nil } +func (i *Uintptr) MarshalYAML() (any, error) { + return i.Load(), nil +} + +func (i *Uintptr) UnmarshalYAML(unmarshal func(any) error) error { + var v uintptr + if err := unmarshal(&v); err != nil { + return err + } + i.Store(v) + return nil +} + func (i *Uintptr) String() string { v := i.Load() return strconv.FormatUint(uint64(v), 10) diff --git a/common/atomic/value.go b/common/atomic/value.go index 0de9fade..e63d2310 100644 --- a/common/atomic/value.go +++ b/common/atomic/value.go @@ -72,6 +72,19 @@ func (t *TypedValue[T]) UnmarshalJSON(b []byte) error { return nil } +func (t *TypedValue[T]) MarshalYAML() (any, error) { + return t.Load(), nil +} + +func (t *TypedValue[T]) UnmarshalYAML(unmarshal func(any) error) error { + var v T + if err := unmarshal(&v); err != nil { + return err + } + t.Store(v) + return nil +} + func NewTypedValue[T any](t T) (v TypedValue[T]) { v.Store(t) return