vm: support uint8 and uint64 in makeStackItem()

Convenience to avoid casts, uint64 is also a bit special in that it can't be
converted to int64 without data loss.
This commit is contained in:
Roman Khimov 2019-10-10 16:47:27 +03:00
parent 6b70c5f2bd
commit acb7ef7fbd

View file

@ -1,6 +1,7 @@
package vm
import (
"encoding/binary"
"encoding/json"
"fmt"
"math/big"
@ -23,6 +24,10 @@ func makeStackItem(v interface{}) StackItem {
return &BigIntegerItem{
value: big.NewInt(val),
}
case uint8:
return &BigIntegerItem{
value: big.NewInt(int64(val)),
}
case uint16:
return &BigIntegerItem{
value: big.NewInt(int64(val)),
@ -31,6 +36,14 @@ func makeStackItem(v interface{}) StackItem {
return &BigIntegerItem{
value: big.NewInt(int64(val)),
}
case uint64:
b := make([]byte, 8)
binary.BigEndian.PutUint64(b, val)
bigInt := big.NewInt(0)
bigInt.SetBytes(b)
return &BigIntegerItem{
value: bigInt,
}
case []byte:
return &ByteArrayItem{
value: val,