type buffer … type decoder … type message … func marshal(m message) []byte { … } func encodeVarint(b *buffer, x uint64) { … } func encodeLength(b *buffer, tag int, len int) { … } func encodeUint64(b *buffer, tag int, x uint64) { … } func encodeUint64s(b *buffer, tag int, x []uint64) { … } func encodeUint64Opt(b *buffer, tag int, x uint64) { … } func encodeInt64(b *buffer, tag int, x int64) { … } func encodeInt64Opt(b *buffer, tag int, x int64) { … } func encodeInt64s(b *buffer, tag int, x []int64) { … } func encodeString(b *buffer, tag int, x string) { … } func encodeStrings(b *buffer, tag int, x []string) { … } func encodeBool(b *buffer, tag int, x bool) { … } func encodeBoolOpt(b *buffer, tag int, x bool) { … } func encodeMessage(b *buffer, tag int, m message) { … } func unmarshal(data []byte, m message) (err error) { … } func le64(p []byte) uint64 { … } func le32(p []byte) uint32 { … } func decodeVarint(data []byte) (uint64, []byte, error) { … } func decodeField(b *buffer, data []byte) ([]byte, error) { … } func checkType(b *buffer, typ int) error { … } func decodeMessage(b *buffer, m message) error { … } func decodeInt64(b *buffer, x *int64) error { … } func decodeInt64s(b *buffer, x *[]int64) error { … } func decodeUint64(b *buffer, x *uint64) error { … } func decodeUint64s(b *buffer, x *[]uint64) error { … } func decodeString(b *buffer, x *string) error { … } func decodeStrings(b *buffer, x *[]string) error { … } func decodeBool(b *buffer, x *bool) error { … }