github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/core/native/native_neo_candidate.go (about) 1 package native 2 3 import ( 4 "math/big" 5 6 "github.com/nspcc-dev/neo-go/pkg/vm/stackitem" 7 ) 8 9 type candidate struct { 10 Registered bool 11 Votes big.Int 12 } 13 14 // FromBytes unmarshals a candidate from the byte array. 15 func (c *candidate) FromBytes(data []byte) *candidate { 16 err := stackitem.DeserializeConvertible(data, c) 17 if err != nil { 18 panic(err) 19 } 20 return c 21 } 22 23 // ToStackItem implements stackitem.Convertible. It never returns an error. 24 func (c *candidate) ToStackItem() (stackitem.Item, error) { 25 return stackitem.NewStruct([]stackitem.Item{ 26 stackitem.NewBool(c.Registered), 27 stackitem.NewBigInteger(&c.Votes), 28 }), nil 29 } 30 31 // FromStackItem implements stackitem.Convertible. 32 func (c *candidate) FromStackItem(item stackitem.Item) error { 33 arr := item.(*stackitem.Struct).Value().([]stackitem.Item) 34 vs, err := arr[1].TryInteger() 35 if err != nil { 36 return err 37 } 38 reg, err := arr[0].TryBool() 39 if err != nil { 40 return err 41 } 42 c.Registered = reg 43 c.Votes = *vs 44 return nil 45 }