package internal

import (
	fasthex 
)

type HexEncoder struct {
	b       []byte
	written bool
}

func ( []byte) *HexEncoder {
	return &HexEncoder{
		b: ,
	}
}

func ( *HexEncoder) () []byte {
	return .b
}

func ( *HexEncoder) ( []byte) (int, error) {
	if !.written {
		.b = append(.b, '\'')
		.b = append(.b, `\x`...)
		.written = true
	}

	 := len(.b)
	.b = append(.b, make([]byte, fasthex.EncodedLen(len()))...)
	fasthex.Encode(.b[:], )

	return len(), nil
}

func ( *HexEncoder) () error {
	if .written {
		.b = append(.b, '\'')
	} else {
		.b = append(.b, "NULL"...)
	}
	return nil
}