github.com/protolambda/zssz@v0.1.5/types/ssz_uint16.go (about)

     1  package types
     2  
     3  import (
     4  	"encoding/binary"
     5  	"fmt"
     6  	. "github.com/protolambda/zssz/dec"
     7  	. "github.com/protolambda/zssz/enc"
     8  	. "github.com/protolambda/zssz/htr"
     9  	. "github.com/protolambda/zssz/pretty"
    10  	"unsafe"
    11  )
    12  
    13  type SSZUint16 struct{}
    14  
    15  func (t SSZUint16) FuzzMinLen() uint64 {
    16  	return 2
    17  }
    18  
    19  func (t SSZUint16) FuzzMaxLen() uint64 {
    20  	return 2
    21  }
    22  
    23  func (t SSZUint16) MinLen() uint64 {
    24  	return 2
    25  }
    26  
    27  func (t SSZUint16) MaxLen() uint64 {
    28  	return 2
    29  }
    30  
    31  func (t SSZUint16) FixedLen() uint64 {
    32  	return 2
    33  }
    34  
    35  func (t SSZUint16) IsFixed() bool {
    36  	return true
    37  }
    38  
    39  func (t SSZUint16) SizeOf(p unsafe.Pointer) uint64 {
    40  	return 2
    41  }
    42  
    43  func (t SSZUint16) Encode(eb *EncodingWriter, p unsafe.Pointer) error {
    44  	binary.LittleEndian.PutUint16(eb.Scratch[0:2], *(*uint16)(p))
    45  	return eb.Write(eb.Scratch[0:2])
    46  }
    47  
    48  func (t SSZUint16) Decode(dr *DecodingReader, p unsafe.Pointer) error {
    49  	v, err := dr.ReadUint16()
    50  	if err != nil {
    51  		return err
    52  	}
    53  	*(*uint16)(p) = v
    54  	return nil
    55  }
    56  
    57  func (t SSZUint16) DryCheck(dr *DecodingReader) error {
    58  	_, err := dr.Skip(2)
    59  	return err
    60  }
    61  
    62  func (t SSZUint16) HashTreeRoot(h MerkleFn, p unsafe.Pointer) (out [32]byte) {
    63  	binary.LittleEndian.PutUint16(out[:], *(*uint16)(p))
    64  	return
    65  }
    66  
    67  func (t SSZUint16) Pretty(indent uint32, w *PrettyWriter, p unsafe.Pointer) {
    68  	w.WriteIndent(indent)
    69  	if *(*uint16)(p) == ^uint16(0) {
    70  		w.Write("0xFFFF")
    71  	} else {
    72  		w.Write(fmt.Sprintf("%d", *(*uint16)(p)))
    73  	}
    74  }