51 lines
857 B
Go
51 lines
857 B
Go
package ogen_types
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/go-faster/jx"
|
|
)
|
|
|
|
type Decimal struct {
|
|
Value int64
|
|
Exponent int
|
|
}
|
|
|
|
var ErrUnknownField = errors.New("unknown field")
|
|
|
|
func (o *Decimal) Encode(e *jx.Encoder) {
|
|
e.ObjStart()
|
|
e.FieldStart("value")
|
|
e.Int64(o.Value)
|
|
e.FieldStart("exponent")
|
|
e.Int(o.Exponent)
|
|
e.ObjEnd()
|
|
}
|
|
|
|
func (o *Decimal) Decode(d *jx.Decoder) error {
|
|
err := d.Obj(func(d *jx.Decoder, key string) (err error) {
|
|
if key == "exponent" {
|
|
if o.Exponent, err = d.Int(); err != nil {
|
|
return err
|
|
}
|
|
} else if key == "value" {
|
|
if o.Value, err = d.Int64(); err != nil {
|
|
return err
|
|
}
|
|
} else {
|
|
err = ErrUnknownField
|
|
}
|
|
|
|
return err
|
|
})
|
|
return err
|
|
}
|
|
|
|
func (d *Decimal) MarshalJSON() ([]byte, error) {
|
|
return []byte{0x00, 0x01, 0x02}, nil
|
|
}
|
|
|
|
func (d *Decimal) UnmarshalJSON(data []byte) error {
|
|
return nil
|
|
}
|