@@ -58,13 +58,11 @@ module Data.Text.Internal.Builder
60import Control.Monad.ST (ST, runST)
60import Control.Monad.ST (ST, runST)
61−import Data.Bits ((.&.))
62import Data.Monoid (Monoid(..))
61import Data.Monoid (Monoid(..))
63import Data.Text.Internal (Text(..))
62import Data.Text.Internal (Text(..))
64import Data.Text.Internal.Lazy (smallChunkSize)
63import Data.Text.Internal.Lazy (smallChunkSize)
65import Data.Text.Unsafe (inlineInterleaveST)
64import Data.Text.Unsafe (inlineInterleaveST)
66−import Data.Text.Internal.Unsafe.Char (ord, unsafeWrite)
65+import Data.Text.Internal.Unsafe.Char (unsafeWrite)
67−import Data.Text.Internal.Unsafe.Shift (shiftR)
68import Prelude hiding (map, putChar)
66import Prelude hiding (map, putChar)
70import qualified Data.String as String
68import qualified Data.String as String
@@ -127,17 +125,7 @@ empty = Builder (\ k buf -> k buf)
127-- * @'toLazyText' ('singleton' c) = 'L.singleton' c@
125-- * @'toLazyText' ('singleton' c) = 'L.singleton' c@
129singleton :: Char -> Builder
127singleton :: Char -> Builder
130−singleton c = writeAtMost 2 $ \ marr o ->
128+singleton c = writeAtMost 2 $ \ marr o -> unsafeWrite marr o c
132− then A.unsafeWrite marr o (fromIntegral n) >> return 1
134− A.unsafeWrite marr o lo
135− A.unsafeWrite marr (o+1) hi
139− lo = fromIntegral $ (m `shiftR` 10) + 0xD800
140− hi = fromIntegral $ (m .&. 0x3FF) + 0xDC00
141{-# INLINE singleton #-}
129{-# INLINE singleton #-}
143------------------------------------------------------------------------
131------------------------------------------------------------------------