Add replicate
This commit is contained in:
parent
616f724846
commit
5c2dd94acf
3 changed files with 20 additions and 1 deletions
|
@ -5,6 +5,10 @@ Note: Prior to version 0.3.4.0, this library was named
|
||||||
`small-bytearray-builder` is now just a compatibility shim
|
`small-bytearray-builder` is now just a compatibility shim
|
||||||
to ease the migration process.
|
to ease the migration process.
|
||||||
|
|
||||||
|
## 0.3.6.0 -- 2020-??-??
|
||||||
|
|
||||||
|
* Add `replicate`.
|
||||||
|
|
||||||
## 0.3.5.0 -- 2020-05-01
|
## 0.3.5.0 -- 2020-05-01
|
||||||
|
|
||||||
* Add `wordLEB128` and `word64LEB128`.
|
* Add `wordLEB128` and `word64LEB128`.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
cabal-version: 2.2
|
cabal-version: 2.2
|
||||||
name: bytebuild
|
name: bytebuild
|
||||||
version: 0.3.5.0
|
version: 0.3.6.0
|
||||||
synopsis: Serialize to a small byte arrays
|
synopsis: Serialize to a small byte arrays
|
||||||
description:
|
description:
|
||||||
This is similar to the builder facilities provided by
|
This is similar to the builder facilities provided by
|
||||||
|
|
|
@ -118,10 +118,14 @@ module Data.Bytes.Builder
|
||||||
-- * Encode Floating-Point Types
|
-- * Encode Floating-Point Types
|
||||||
-- ** Human-Readable
|
-- ** Human-Readable
|
||||||
, doubleDec
|
, doubleDec
|
||||||
|
-- * Replication
|
||||||
|
, replicate
|
||||||
-- * Control
|
-- * Control
|
||||||
, flush
|
, flush
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import Prelude hiding (replicate)
|
||||||
|
|
||||||
import Control.Exception (SomeException,toException)
|
import Control.Exception (SomeException,toException)
|
||||||
import Control.Monad.ST (ST,runST)
|
import Control.Monad.ST (ST,runST)
|
||||||
import Control.Monad.IO.Class (MonadIO,liftIO)
|
import Control.Monad.IO.Class (MonadIO,liftIO)
|
||||||
|
@ -1130,6 +1134,17 @@ backwardsWordLoop arr off0 x0 = go off0 x0 where
|
||||||
go (off + 1) y
|
go (off + 1) y
|
||||||
else pure off
|
else pure off
|
||||||
|
|
||||||
|
-- | Replicate a byte the given number of times.
|
||||||
|
replicate ::
|
||||||
|
Int -- ^ Number of times to replicate the byte
|
||||||
|
-> Word8 -- ^ Byte to replicate
|
||||||
|
-> Builder
|
||||||
|
replicate !len !w = fromEffect len
|
||||||
|
(\marr off -> do
|
||||||
|
PM.setByteArray marr off len w
|
||||||
|
pure (off + len)
|
||||||
|
)
|
||||||
|
|
||||||
-- Based on C code from https://stackoverflow.com/a/5558614
|
-- Based on C code from https://stackoverflow.com/a/5558614
|
||||||
-- For numbers less than 1073741829, this gives a correct answer.
|
-- For numbers less than 1073741829, this gives a correct answer.
|
||||||
approxDiv10 :: Word -> Word
|
approxDiv10 :: Word -> Word
|
||||||
|
|
Loading…
Reference in a new issue