basement-0.0.10: Foundation scrap box of array & string

LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Basement.Types.OffsetSize

Description

 
Synopsis

Documentation

newtype FileSize #

File size in bytes

Constructors

FileSize Word64 
Instances
Eq FileSize # 
Instance details

Defined in Basement.Types.OffsetSize

Ord FileSize # 
Instance details

Defined in Basement.Types.OffsetSize

Show FileSize # 
Instance details

Defined in Basement.Types.OffsetSize

newtype Offset ty #

Offset in a data structure consisting of elements of type ty.

Int is a terrible backing type which is hard to get away from, considering that GHC/Haskell are mostly using this for offset. Trying to bring some sanity by a lightweight wrapping.

Constructors

Offset Int 
Instances
TryFrom Int (Offset ty) # 
Instance details

Defined in Basement.From

Methods

tryFrom :: Int -> Maybe (Offset ty) #

From Word (Offset ty) # 
Instance details

Defined in Basement.From

Methods

from :: Word -> Offset ty #

Enum (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

succ :: Offset ty -> Offset ty #

pred :: Offset ty -> Offset ty #

toEnum :: Int -> Offset ty #

fromEnum :: Offset ty -> Int #

enumFrom :: Offset ty -> [Offset ty] #

enumFromThen :: Offset ty -> Offset ty -> [Offset ty] #

enumFromTo :: Offset ty -> Offset ty -> [Offset ty] #

enumFromThenTo :: Offset ty -> Offset ty -> Offset ty -> [Offset ty] #

Eq (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

(==) :: Offset ty -> Offset ty -> Bool #

(/=) :: Offset ty -> Offset ty -> Bool #

Num (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

(+) :: Offset ty -> Offset ty -> Offset ty #

(-) :: Offset ty -> Offset ty -> Offset ty #

(*) :: Offset ty -> Offset ty -> Offset ty #

negate :: Offset ty -> Offset ty #

abs :: Offset ty -> Offset ty #

signum :: Offset ty -> Offset ty #

fromInteger :: Integer -> Offset ty #

Ord (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

compare :: Offset ty -> Offset ty -> Ordering #

(<) :: Offset ty -> Offset ty -> Bool #

(<=) :: Offset ty -> Offset ty -> Bool #

(>) :: Offset ty -> Offset ty -> Bool #

(>=) :: Offset ty -> Offset ty -> Bool #

max :: Offset ty -> Offset ty -> Offset ty #

min :: Offset ty -> Offset ty -> Offset ty #

Show (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

showsPrec :: Int -> Offset ty -> ShowS #

show :: Offset ty -> String #

showList :: [Offset ty] -> ShowS #

Integral (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

fromInteger :: Integer -> Offset ty #

IsNatural (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

toNatural :: Offset ty -> Natural #

IsIntegral (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

toInteger :: Offset ty -> Integer #

Subtractive (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Associated Types

type Difference (Offset ty) :: Type #

Methods

(-) :: Offset ty -> Offset ty -> Difference (Offset ty) #

Additive (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

azero :: Offset ty #

(+) :: Offset ty -> Offset ty -> Offset ty #

scale :: IsNatural n => n -> Offset ty -> Offset ty #

NormalForm (Offset a) # 
Instance details

Defined in Basement.NormalForm

Methods

toNormalForm :: Offset a -> () #

type NatNumMaxBound (Offset x) # 
Instance details

Defined in Basement.Types.OffsetSize

type Difference (Offset ty) # 
Instance details

Defined in Basement.Types.OffsetSize

type Difference (Offset ty) = CountOf ty

type Offset8 = Offset Word8 #

Offset in bytes used for memory addressing (e.g. in a vector, string, ..)

offsetPlusE :: Offset ty -> CountOf ty -> Offset ty #

offsetMinusE :: Offset ty -> CountOf ty -> Offset ty #

offsetCast :: Proxy (a -> b) -> Offset a -> Offset b #

offsetSub :: Offset a -> Offset a -> Offset a #

subtract 2 CountOf values of the same type.

m need to be greater than n, otherwise negative count error ensue use the safer (-) version if unsure.

offsetShiftL :: Int -> Offset ty -> Offset ty2 #

offsetShiftR :: Int -> Offset ty -> Offset ty2 #

sizeCast :: Proxy (a -> b) -> CountOf a -> CountOf b #

sizeSub :: CountOf a -> CountOf a -> CountOf a #

subtract 2 CountOf values of the same type.

m need to be greater than n, otherwise negative count error ensue use the safer (-) version if unsure.

countOfRoundUp :: Int -> CountOf ty -> CountOf ty #

alignment need to be a power of 2

(+.) :: Offset ty -> Int -> Offset ty #

(.==#) :: Offset ty -> CountOf ty -> Bool #

newtype CountOf ty #

CountOf of a data structure.

More specifically, it represents the number of elements of type ty that fit into the data structure.

>>> length (fromList ['a', 'b', 'c', '🌟']) :: CountOf Char
CountOf 4

Same caveats as Offset apply here.

Constructors

CountOf Int 
Instances
TryFrom Int (CountOf ty) # 
Instance details

Defined in Basement.From

Methods

tryFrom :: Int -> Maybe (CountOf ty) #

From Word (CountOf ty) # 
Instance details

Defined in Basement.From

Methods

from :: Word -> CountOf ty #

Enum (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

succ :: CountOf ty -> CountOf ty #

pred :: CountOf ty -> CountOf ty #

toEnum :: Int -> CountOf ty #

fromEnum :: CountOf ty -> Int #

enumFrom :: CountOf ty -> [CountOf ty] #

enumFromThen :: CountOf ty -> CountOf ty -> [CountOf ty] #

enumFromTo :: CountOf ty -> CountOf ty -> [CountOf ty] #

enumFromThenTo :: CountOf ty -> CountOf ty -> CountOf ty -> [CountOf ty] #

Eq (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

(==) :: CountOf ty -> CountOf ty -> Bool #

(/=) :: CountOf ty -> CountOf ty -> Bool #

Num (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

(+) :: CountOf ty -> CountOf ty -> CountOf ty #

(-) :: CountOf ty -> CountOf ty -> CountOf ty #

(*) :: CountOf ty -> CountOf ty -> CountOf ty #

negate :: CountOf ty -> CountOf ty #

abs :: CountOf ty -> CountOf ty #

signum :: CountOf ty -> CountOf ty #

fromInteger :: Integer -> CountOf ty #

Ord (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

compare :: CountOf ty -> CountOf ty -> Ordering #

(<) :: CountOf ty -> CountOf ty -> Bool #

(<=) :: CountOf ty -> CountOf ty -> Bool #

(>) :: CountOf ty -> CountOf ty -> Bool #

(>=) :: CountOf ty -> CountOf ty -> Bool #

max :: CountOf ty -> CountOf ty -> CountOf ty #

min :: CountOf ty -> CountOf ty -> CountOf ty #

Show (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

showsPrec :: Int -> CountOf ty -> ShowS #

show :: CountOf ty -> String #

showList :: [CountOf ty] -> ShowS #

Semigroup (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

(<>) :: CountOf ty -> CountOf ty -> CountOf ty #

sconcat :: NonEmpty (CountOf ty) -> CountOf ty #

stimes :: Integral b => b -> CountOf ty -> CountOf ty #

Monoid (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

mempty :: CountOf ty #

mappend :: CountOf ty -> CountOf ty -> CountOf ty #

mconcat :: [CountOf ty] -> CountOf ty #

Integral (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

fromInteger :: Integer -> CountOf ty #

IsNatural (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

toNatural :: CountOf ty -> Natural #

IsIntegral (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

toInteger :: CountOf ty -> Integer #

Subtractive (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Associated Types

type Difference (CountOf ty) :: Type #

Methods

(-) :: CountOf ty -> CountOf ty -> Difference (CountOf ty) #

Additive (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

Methods

azero :: CountOf ty #

(+) :: CountOf ty -> CountOf ty -> CountOf ty #

scale :: IsNatural n => n -> CountOf ty -> CountOf ty #

NormalForm (CountOf a) # 
Instance details

Defined in Basement.NormalForm

Methods

toNormalForm :: CountOf a -> () #

From (CountOf ty) Word # 
Instance details

Defined in Basement.From

Methods

from :: CountOf ty -> Word #

From (CountOf ty) Int # 
Instance details

Defined in Basement.From

Methods

from :: CountOf ty -> Int #

type NatNumMaxBound (CountOf x) # 
Instance details

Defined in Basement.Types.OffsetSize

type Difference (CountOf ty) # 
Instance details

Defined in Basement.Types.OffsetSize

type Difference (CountOf ty) = Maybe (CountOf ty)

type Countable ty n = NatWithinBound (CountOf ty) n #

type Offsetable ty n = NatWithinBound (Offset ty) n #

natValCountOf :: forall n ty proxy. (KnownNat n, NatWithinBound (CountOf ty) n) => proxy n -> CountOf ty #

natValOffset :: forall n ty proxy. (KnownNat n, NatWithinBound (Offset ty) n) => proxy n -> Offset ty #