Data.Text.Internal.Unsafe.Shift

text-1.2.5.0: An efficient packed Unicode text type.

Copyright | (c) Bryan O'Sullivan 2009
License | BSD-style
Maintainer | bos@serpentine.com
Stability | experimental
Portability | GHC
Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.Text.Internal.Unsafe.Shift

Description

Warning: this is an internal module, and does not have a stable API or name. Functions in this module may not check or enforce preconditions expected by public modules. Use at your own risk!

Fast, unchecked bit shifting functions.

Synopsis

- class UnsafeShift a where
  - shiftL :: a -> Int -> a
  - shiftR :: a -> Int -> a

# Documentation

class UnsafeShift a where Source #

This is a workaround for poor optimisation in GHC 6.8.2. It fails to notice constant-width shifts, and adds a test and branch to every shift. This imposes about a 10% performance hit.

These functions are undefined when the amount being shifted by is greater than the size in bits of a machine Int#.

Minimal complete definition

Nothing

Methods

shiftL :: a -> Int -> a Source #

default shiftL :: Bits a => a -> Int -> a Source #

shiftR :: a -> Int -> a Source #

default shiftR :: Bits a => a -> Int -> a Source #

#### Instances

Instances details

UnsafeShift Word16 Source # |
Instance details Defined in Data.Text.Internal.Unsafe.Shift Methods shiftL :: Word16 -> Int -> Word16 Source # shiftR :: Word16 -> Int -> Word16 Source #
UnsafeShift Word32 Source # |
Instance details Defined in Data.Text.Internal.Unsafe.Shift Methods shiftL :: Word32 -> Int -> Word32 Source # shiftR :: Word32 -> Int -> Word32 Source #
UnsafeShift Word64 Source # |
Instance details Defined in Data.Text.Internal.Unsafe.Shift Methods shiftL :: Word64 -> Int -> Word64 Source # shiftR :: Word64 -> Int -> Word64 Source #
UnsafeShift Int Source # |
Instance details Defined in Data.Text.Internal.Unsafe.Shift Methods shiftL :: Int -> Int -> Int Source # shiftR :: Int -> Int -> Int Source #