text-0.11.3.1: An efficient packed Unicode text type.

Portabilityportable
Stabilityexperimental
Maintainerbos@serpentine.com, rtomharper@googlemail.com, duncan@haskell.org
Safe HaskellNone

Data.Text.Unsafe

Description

A module containing unsafe Text operations, for very very careful use in heavily tested code.

Synopsis

Documentation

inlineInterleaveST :: ST s a -> ST s aSource

Allow an ST computation to be deferred lazily. When passed an action of type ST s a, the action will only be performed when the value of a is demanded.

This function is identical to the normal unsafeInterleaveST, but is inlined and hence faster.

Note: This operation is highly unsafe, as it can introduce externally visible non-determinism into an ST action.

inlinePerformIO :: IO a -> aSource

Just like unsafePerformIO, but we inline it. Big performance gains as it exposes lots of things to further inlining. Very unsafe. In particular, you should do no memory allocation inside an inlinePerformIO block. On Hugs this is just unsafePerformIO.

unsafeDupablePerformIO :: IO a -> a

This version of unsafePerformIO is more efficient because it omits the check that the IO is only being performed by a single thread. Hence, when you use unsafeDupablePerformIO, there is a possibility that the IO action may be performed multiple times (on a multiprocessor), and you should therefore ensure that it gives the same results each time.

data Iter Source

Constructors

Iter !Char !Int 

iter :: Text -> Int -> IterSource

O(1) Iterate (unsafely) one step forwards through a UTF-16 array, returning the current character and the delta to add to give the next offset to iterate at.

iter_ :: Text -> Int -> IntSource

O(1) Iterate one step through a UTF-16 array, returning the delta to add to give the next offset to iterate at.

reverseIter :: Text -> Int -> (Char, Int)Source

O(1) Iterate one step backwards through a UTF-16 array, returning the current character and the delta to add (i.e. a negative number) to give the next offset to iterate at.

unsafeHead :: Text -> CharSource

O(1) A variant of head for non-empty Text. unsafeHead omits the check for the empty case, so there is an obligation on the programmer to provide a proof that the Text is non-empty.

unsafeTail :: Text -> TextSource

O(1) A variant of tail for non-empty Text. unsafeHead omits the check for the empty case, so there is an obligation on the programmer to provide a proof that the Text is non-empty.

lengthWord16 :: Text -> IntSource

O(1) Return the length of a Text in units of Word16. This is useful for sizing a target array appropriately before using unsafeCopyToPtr.

takeWord16 :: Int -> Text -> TextSource

O(1) Unchecked take of k Word16s from the front of a Text.

dropWord16 :: Int -> Text -> TextSource

O(1) Unchecked drop of k Word16s from the front of a Text.