Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
74e28d9672 | ||
|
|
0218c2131f |
No files matched your search
@@ -30,6 +30,54 @@ type byteBuffer struct {
|
|||||||
writerCursor Cursor
|
writerCursor Cursor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *byteBuffer) WriteShortByteArray(data []byte) error {
|
||||||
|
if len(data) > 0xFFFF {
|
||||||
|
return ErrOutOfBounds.CreateEmpty()
|
||||||
|
}
|
||||||
|
if b.RemainingWriterBytes() < 2+len(data) {
|
||||||
|
return ErrOutOfBounds.CreateEmpty()
|
||||||
|
}
|
||||||
|
if err := b.WriteShortLE(int16(len(data))); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
n, err := b.Write(data)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if n != len(data) {
|
||||||
|
return ErrOutOfBounds.CreateEmpty()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *byteBuffer) WriteByteArray(data []byte) error {
|
||||||
|
if len(data) > 0xFFFFFFFF {
|
||||||
|
return ErrOutOfBounds.CreateEmpty()
|
||||||
|
}
|
||||||
|
if b.RemainingWriterBytes() < 4+len(data) {
|
||||||
|
return ErrOutOfBounds.CreateEmpty()
|
||||||
|
}
|
||||||
|
if err := b.WriteIntLE(int32(len(data))); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
n, err := b.Write(data)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if n != len(data) {
|
||||||
|
return ErrOutOfBounds.CreateEmpty()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *byteBuffer) WriteShortString(s string) error {
|
||||||
|
return b.WriteByteArray([]byte(s))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *byteBuffer) WriteString(s string) error {
|
||||||
|
return b.WriteByteArray([]byte(s))
|
||||||
|
}
|
||||||
|
|
||||||
func (b *byteBuffer) ReadShortByteArray() ([]byte, error) {
|
func (b *byteBuffer) ReadShortByteArray() ([]byte, error) {
|
||||||
if b.RemainingReaderBytes() < 2 {
|
if b.RemainingReaderBytes() < 2 {
|
||||||
return nil, ErrOutOfBounds.CreateEmpty()
|
return nil, ErrOutOfBounds.CreateEmpty()
|
||||||
|
|||||||
@@ -2,8 +2,44 @@ package uio
|
|||||||
|
|
||||||
type Sink interface {
|
type Sink interface {
|
||||||
Write(src []byte) (n int, err error)
|
Write(src []byte) (n int, err error)
|
||||||
|
WriteFully(src []byte) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type BufferedSink interface {
|
type BufferedSink interface {
|
||||||
Sink
|
Sink
|
||||||
|
WriteByte(b byte) error
|
||||||
|
WriteUByte(b uint8) error
|
||||||
|
|
||||||
|
WriteShortLE(v int16) error
|
||||||
|
WriteShortBE(v int16) error
|
||||||
|
|
||||||
|
WriteIntLE(v int32) error
|
||||||
|
WriteIntBE(v int32) error
|
||||||
|
|
||||||
|
WriteLongLE(v int64) error
|
||||||
|
WriteLongBE(v int64) error
|
||||||
|
|
||||||
|
WriteUShortLE(v uint16) error
|
||||||
|
WriteUShortBE(v uint16) error
|
||||||
|
|
||||||
|
WriteUIntLE(v uint32) error
|
||||||
|
WriteUIntBE(v uint32) error
|
||||||
|
|
||||||
|
WriteULongLE(v uint64) error
|
||||||
|
WriteULongBE(v uint64) error
|
||||||
|
|
||||||
|
WriteFloatLE(v float32) error
|
||||||
|
WriteFloatBE(v float32) error
|
||||||
|
|
||||||
|
WriteDoubleLE(v float64) error
|
||||||
|
WriteDoubleBE(v float64) error
|
||||||
|
|
||||||
|
// WriteShortByteArray writes a size-prefixed byte array.
|
||||||
|
// Structure: [ShortLE : size][size bytes data]
|
||||||
|
WriteShortByteArray(data []byte) error
|
||||||
|
// WriteByteArray writes a size-prefixed byte array.
|
||||||
|
// Structure: [IntLE : size][size bytes data]
|
||||||
|
WriteByteArray(data []byte) error
|
||||||
|
WriteShortString(s string) error
|
||||||
|
WriteString(s string) error
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user