cborg-0.2.8.0: Concise Binary Object Representation (CBOR)
Copyright (c) Duncan Coutts 2015-2017
License BSD3-style (see LICENSE.txt)
Maintainer duncan@community.haskell.org
Stability experimental
Portability non-portable (GHC extensions)
Safe Haskell None
Language Haskell2010

Codec.CBOR.Magic

Description

An internal module for doing magical, low-level, and unholy things in the name of efficiency.

Synopsis

Word utilities

grabWord8 :: Ptr () -> Word8 Source #

Grab a 8-bit Word given a Ptr to some address.

grabWord16 :: Ptr () -> Word16 Source #

Grab a 16-bit Word given a Ptr to some address.

grabWord32 :: Ptr () -> Word32 Source #

Grab a 32-bit Word given a Ptr to some address.

grabWord64 :: Ptr () -> Word64 Source #

Grab a 64-bit Word64 given a Ptr to some address.

ByteString utilities

eatTailWord8 :: ByteString -> Word8 Source #

Take the tail of a ByteString (i.e. drop the first byte) and read the resulting byte(s) as an 8-bit word value. The input ByteString MUST be at least 2 bytes long: one byte to drop from the front, and one to read as a Word value. This is not checked, and failure to ensure this will result in undefined behavior.

eatTailWord16 :: ByteString -> Word16 Source #

Take the tail of a ByteString (i.e. drop the first byte) and read the resulting byte(s) as a 16-bit word value. The input ByteString MUST be at least 3 bytes long: one byte to drop from the front, and two to read as a 16-bit Word value. This is not checked, and failure to ensure this will result in undefined behavior.

eatTailWord32 :: ByteString -> Word32 Source #

Take the tail of a ByteString (i.e. drop the first byte) and read the resulting byte(s) as a 32-bit word value. The input ByteString MUST be at least 5 bytes long: one byte to drop from the front, and four to read as a 32-bit Word value. This is not checked, and failure to ensure this will result in undefined behavior.

eatTailWord64 :: ByteString -> Word64 Source #

Take the tail of a ByteString (i.e. drop the first byte) and read the resulting byte(s) as a 64-bit word value. The input ByteString MUST be at least 9 bytes long: one byte to drop from the front, and eight to read as a 64-bit Word64 value. This is not checked, and failure to ensure this will result in undefined behavior.

Half-floats

Float/Word conversion

Int and Word explicit conversions

Integer utilities

Simple mutable counters

data Counter s Source #

An efficient, mutable counter. Designed to be used inside ST or other primitive monads, hence it carries an abstract rank-2 s type parameter.

newCounter :: Int -> ST s ( Counter s) Source #

Create a new counter with a starting Int value.

readCounter :: Counter s -> ST s Int Source #

Read the current value of a Counter .

writeCounter :: Counter s -> Int -> ST s () Source #

Write a new value into the Counter .

Array support

copyByteArrayToByteString Source #

Arguments

:: ByteArray

ByteArray to copy from.

-> Int

Offset into the ByteArray to start with.

-> Int

Length of the data to copy.

-> ByteString

Copy a ByteArray at a certain offset and length into a ByteString .