github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/acm/balance/type.go (about) 1 package balance 2 3 type Type uint32 4 5 const ( 6 TypeNative Type = 1 7 TypePower Type = 2 8 ) 9 10 var nameFromType = map[Type]string{ 11 TypeNative: "Native", 12 TypePower: "Power", 13 } 14 15 var typeFromName = make(map[string]Type) 16 17 func init() { 18 for t, n := range nameFromType { 19 typeFromName[n] = t 20 } 21 } 22 23 func TypeFromString(name string) Type { 24 return typeFromName[name] 25 } 26 27 func (typ Type) String() string { 28 name, ok := nameFromType[typ] 29 if ok { 30 return name 31 } 32 return "UnknownBalanceType" 33 } 34 35 func (typ Type) MarshalText() ([]byte, error) { 36 return []byte(typ.String()), nil 37 } 38 39 func (typ *Type) UnmarshalText(data []byte) error { 40 *typ = TypeFromString(string(data)) 41 return nil 42 } 43 44 // Protobuf support 45 func (typ Type) Marshal() ([]byte, error) { 46 return typ.MarshalText() 47 } 48 49 func (typ *Type) Unmarshal(data []byte) error { 50 return typ.UnmarshalText(data) 51 }