Skip to content
Snippets Groups Projects
uint64.go 640 B
package marshal

import (
	"encoding/binary"
)

func Uint64(getter uint64Getter, setter uint64Setter) *uint64Field {
	return &uint64Field{
		getter: getter,
		setter: setter,
	}
}

type uint64Getter func(receiver interface{}) uint64
type uint64Setter func(receiver interface{}, val uint64)

type uint64Field struct {
	getter uint64Getter
	setter uint64Setter
}

func (uint64Field *uint64Field) Marshal(obj interface{}, data []byte) (result []byte) {
	result = make([]byte, 8)

	binary.BigEndian.PutUint64(result, obj.(uint64))

	return
}

func (uint64Field *uint64Field) Get(obj interface{}) interface{} {
	return uint64Field.getter(obj)
}