bspack-0.0.1: A simple and fast bytestring packer

LicenseBSD-Style
Safe HaskellNone
LanguageHaskell2010

Data.ByteString.Pack

Contents

Description

Copyright : Copyright © 2014 Nicolas DI PRIMA

Maintainer : Nicolas DI PRIMA nicolas@di-prima.fr Stability : experimental Portability : unknown

Synopsis

Documentation

data Packer a Source

Simple Bytestring Packer

data Result a Source

Packing result:

  • PackerOK a -> means the bytestring has been filled with the given data
  • PackerMore a cache -> a temporary

Constructors

PackerMore a Cache 
PackerFail String 

Instances

Show a => Show (Result a) 

pack :: Packer a -> Int -> Either String ByteString Source

pack the given packer into the given bytestring

Operations

put

putStorable :: Storable storable => storable -> Packer () Source

put a storable from the current position in the stream

putByteString :: ByteString -> Packer () Source

put a Bytestring from the current position in the stream

If the ByteString ins null, then do nothing

fillList :: Storable storable => [storable] -> Packer () Source

Will put the given storable list from the current position in the stream to the end.

This function will fail with not enough storage if the given storable can't be written (not enough space)

example: > pack (fillList $ [1..] :: Word8) 9 ==> "123456789" > pack (fillList $ [1..] :: Word32) 4 ==> "1000" > pack (fillList $ [1..] :: Word32) 64 -- will work > pack (fillList $ [1..] :: Word32) 1 -- will fail (not enough space) > pack (fillList $ [1..] :: Word32) 131 -- will fail (not enough space)

fillUpWith :: Storable storable => storable -> Packer () Source

fill up from the current position in the stream to the end

it is basically: > fillUpWith s == fillList (repeat s)

skip

skip :: Int -> Packer () Source

skip some bytes from the current position in the stream

skipStorable :: Storable storable => storable -> Packer () Source

skip the size of a storable from the current position in the stream