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  }