package pq

import (
	
	

	
)

type readBuf []byte

func ( *readBuf) () ( int) {
	 = int(int32(binary.BigEndian.Uint32(*)))
	* = (*)[4:]
	return
}

func ( *readBuf) () ( oid.Oid) {
	 = oid.Oid(binary.BigEndian.Uint32(*))
	* = (*)[4:]
	return
}
N.B: this is actually an unsigned 16-bit integer, unlike int32
func ( *readBuf) () ( int) {
	 = int(binary.BigEndian.Uint16(*))
	* = (*)[2:]
	return
}

func ( *readBuf) () string {
	 := bytes.IndexByte(*, 0)
	if  < 0 {
		errorf("invalid message format; expected string terminator")
	}
	 := (*)[:]
	* = (*)[+1:]
	return string()
}

func ( *readBuf) ( int) ( []byte) {
	 = (*)[:]
	* = (*)[:]
	return
}

func ( *readBuf) () byte {
	return .next(1)[0]
}

type writeBuf struct {
	buf []byte
	pos int
}

func ( *writeBuf) ( int) {
	 := make([]byte, 4)
	binary.BigEndian.PutUint32(, uint32())
	.buf = append(.buf, ...)
}

func ( *writeBuf) ( int) {
	 := make([]byte, 2)
	binary.BigEndian.PutUint16(, uint16())
	.buf = append(.buf, ...)
}

func ( *writeBuf) ( string) {
	.buf = append(append(.buf, ...), '\000')
}

func ( *writeBuf) ( byte) {
	.buf = append(.buf, )
}

func ( *writeBuf) ( []byte) {
	.buf = append(.buf, ...)
}

func ( *writeBuf) () []byte {
	 := .buf[.pos:]
	binary.BigEndian.PutUint32(, uint32(len()))
	return .buf
}

func ( *writeBuf) ( byte) {
	 := .buf[.pos:]
	binary.BigEndian.PutUint32(, uint32(len()))
	.pos = len(.buf) + 1
	.buf = append(.buf, , 0, 0, 0, 0)