text 0.9.0.0 → 0.9.0.1
raw patch · 7 files changed
+25/−23 lines, 7 filesdep ~basedep ~bytestring
Dependency ranges changed: base, bytestring
Files
- Data/Text.hs +5/−3
- Data/Text/Array.hs +6/−6
- Data/Text/Foreign.hs +1/−1
- Data/Text/Fusion.hs +6/−6
- Data/Text/Lazy/Builder.hs +4/−4
- Data/Text/Lazy/Fusion.hs +2/−2
- text.cabal +1/−1
Data/Text.hs view
@@ -344,7 +344,7 @@ where len = len1+len2 x = do- arr <- A.unsafeNew len+ arr <- A.new len A.copyI arr 0 arr1 off1 len1 A.copyI arr len1 arr2 off2 len return arr@@ -708,7 +708,7 @@ ts' = L.filter (not . null) ts len = L.sum $ L.map lengthWord16 ts' go = do- arr <- A.unsafeNew len+ arr <- A.new len let step i (Text a o l) = let !j = i + l in A.copyI arr i a o j >> return j foldM step 0 ts' >> return arr@@ -807,11 +807,13 @@ | n <= 0 || l <= 0 = empty | n == 1 = t | isSingleton t = replicateChar n (unsafeHead t)+ | len < n = error $ "Data.Text.replicate: invalid length " +++ show n -- multiplication overflow | otherwise = Text (A.run x) 0 len where len = l * n x = do- arr <- A.unsafeNew len+ arr <- A.new len let loop !d !i | i >= n = return arr | otherwise = let m = d + l in A.copyI arr d a o m >> loop m (i+1)
Data/Text/Array.hs view
@@ -41,7 +41,7 @@ , toList , unsafeFreeze , unsafeIndex- , unsafeNew+ , new , unsafeWrite ) where @@ -101,9 +101,9 @@ #endif -- | Create an uninitialized mutable array.-unsafeNew :: forall s. Int -> ST s (MArray s)-unsafeNew n- | len < 0 = error $ "Data.Text.Array.unsafeNew: invalid length " ++ show n+new :: forall s. Int -> ST s (MArray s)+new n+ | len < n = error $ "Data.Text.Array.unsafeNew: invalid length " ++ show n | otherwise = ST $ \s1# -> case newByteArray# len# s1# of (# s2#, marr# #) -> (# s2#, MArray marr#@@ -112,7 +112,7 @@ #endif #) where !len@(I# len#) = bytesInArray n-{-# INLINE unsafeNew #-}+{-# INLINE new #-} -- | Freeze a mutable array. Do not mutate the 'MArray' afterwards! unsafeFreeze :: MArray s -> ST s Array@@ -190,7 +190,7 @@ -- | An empty immutable array. empty :: Array-empty = runST (unsafeNew 0 >>= unsafeFreeze)+empty = runST (new 0 >>= unsafeFreeze) -- | Run an action in the ST monad and return an immutable array of -- its result.
Data/Text/Foreign.hs view
@@ -70,7 +70,7 @@ #endif return $! Text arr 0 len where- arr = A.run (A.unsafeNew len >>= copy)+ arr = A.run (A.new len >>= copy) copy marr = loop ptr 0 where loop !p !i | i == len = return marr
Data/Text/Fusion.hs view
@@ -96,7 +96,7 @@ unstream :: Stream Char -> Text unstream (Stream next0 s0 len) = I.textP (P.fst a) 0 (P.snd a) where- a = A.run2 (A.unsafeNew mlen >>= \arr -> outer arr mlen s0 0)+ a = A.run2 (A.new mlen >>= \arr -> outer arr mlen s0 0) where mlen = upperBound 4 len outer arr top = loop where@@ -107,7 +107,7 @@ Yield x s' | j >= top -> {-# SCC "unstream/resize" #-} do let top' = (top + 1) `shiftL` 1- arr' <- A.unsafeNew top'+ arr' <- A.new top' A.copyM arr' 0 arr 0 top outer arr' top' s i | otherwise -> do d <- unsafeWrite arr i x@@ -132,7 +132,7 @@ | otherwise = I.textP arr off' len' where len0' = upperBound 4 (larger len0 4)- (arr, (off', len')) = A.run2 (A.unsafeNew len0' >>= loop s (len0'-1) len0')+ (arr, (off', len')) = A.run2 (A.new len0' >>= loop s (len0'-1) len0') loop !s0 !i !len marr = case next s0 of Done -> return (marr, (j, len-j))@@ -140,7 +140,7 @@ Skip s1 -> loop s1 i len marr Yield x s1 | i < least -> {-# SCC "reverse/resize" #-} do let newLen = len `shiftL` 1- marr' <- A.unsafeNew newLen+ marr' <- A.new newLen A.copyM marr' (newLen-len) marr 0 len write s1 (len+i) newLen marr' | otherwise -> write s1 i len marr@@ -209,7 +209,7 @@ mapAccumL :: (a -> Char -> (a,Char)) -> a -> Stream Char -> (a, Text) mapAccumL f z0 (Stream next0 s0 len) = (nz,I.textP na 0 nl) where- (na,(nz,nl)) = A.run2 (A.unsafeNew mlen >>= \arr -> outer arr mlen z0 s0 0)+ (na,(nz,nl)) = A.run2 (A.new mlen >>= \arr -> outer arr mlen z0 s0 0) where mlen = upperBound 4 len outer arr top = loop where@@ -220,7 +220,7 @@ Yield x s' | j >= top -> {-# SCC "mapAccumL/resize" #-} do let top' = (top + 1) `shiftL` 1- arr' <- A.unsafeNew top'+ arr' <- A.new top' A.copyM arr' 0 arr 0 top outer arr' top' z s i | otherwise -> do let (z',c) = f z x
Data/Text/Lazy/Builder.hs view
@@ -139,7 +139,7 @@ | l <= 1 = do arr <- A.unsafeFreeze marr let !t = Text arr o u- marr' <- A.unsafeNew chunkSize+ marr' <- A.new chunkSize ts <- inlineInterleaveST (loop marr' 0 0 chunkSize s) return $ t : ts | otherwise = do@@ -181,8 +181,8 @@ -- If the initial buffer is too small to hold all data, subsequent -- buffers will be the default buffer size. toLazyTextWith :: Int -> Builder -> L.Text-toLazyTextWith chunkSize m = L.fromChunks . runST $- newBuffer chunkSize >>= runBuilder (m `append` flush) (const (return []))+toLazyTextWith chunkSize m = L.fromChunks (runST $+ newBuffer chunkSize >>= runBuilder (m `append` flush) (const (return []))) -- | /O(1)./ Pop the 'S.Text' we have constructed so far, if any, -- yielding a new chunk in the result lazy 'L.Text'.@@ -252,7 +252,7 @@ newBuffer :: Int -> ST s (Buffer s) newBuffer size = do- arr <- A.unsafeNew size+ arr <- A.new size return $! Buffer arr 0 0 size {-# INLINE newBuffer #-}
Data/Text/Lazy/Fusion.hs view
@@ -59,14 +59,14 @@ Skip s' -> outer s' Yield x s' -> I.Text arr 0 len `chunk` outer s'' where (arr,(s'',len)) = A.run2 fill- fill = do a <- A.unsafeNew unknownLength+ fill = do a <- A.new unknownLength unsafeWrite a 0 x >>= inner a unknownLength s' unknownLength = 4 inner marr len s !i | i + 1 >= chunkSize = return (marr, (s,i)) | i + 1 >= len = do let newLen = min (len `shiftL` 1) chunkSize- marr' <- A.unsafeNew newLen+ marr' <- A.new newLen A.copyM marr' 0 marr 0 len inner marr' newLen s i | otherwise =
text.cabal view
@@ -1,5 +1,5 @@ name: text-version: 0.9.0.0+version: 0.9.0.1 homepage: http://code.haskell.org/text synopsis: An efficient packed Unicode text type. description: