storable-endian 0.2.5 → 0.2.6
raw patch · 2 files changed
+21/−12 lines, 2 filesdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Storable.Endian: instance (HasBigEndian a, Storable a) => Storable (BigEndian a)
- Data.Storable.Endian: instance (HasLittleEndian a, Storable a) => Storable (LittleEndian a)
- Data.Storable.Endian: instance HasBigEndian Double
- Data.Storable.Endian: instance HasBigEndian Float
- Data.Storable.Endian: instance HasBigEndian Int16
- Data.Storable.Endian: instance HasBigEndian Int32
- Data.Storable.Endian: instance HasBigEndian Int64
- Data.Storable.Endian: instance HasBigEndian Word16
- Data.Storable.Endian: instance HasBigEndian Word32
- Data.Storable.Endian: instance HasBigEndian Word64
- Data.Storable.Endian: instance HasLittleEndian Double
- Data.Storable.Endian: instance HasLittleEndian Float
- Data.Storable.Endian: instance HasLittleEndian Int16
- Data.Storable.Endian: instance HasLittleEndian Int32
- Data.Storable.Endian: instance HasLittleEndian Int64
- Data.Storable.Endian: instance HasLittleEndian Word16
- Data.Storable.Endian: instance HasLittleEndian Word32
- Data.Storable.Endian: instance HasLittleEndian Word64
+ Data.Storable.Endian: [getBigEndian] :: BigEndian a -> a
+ Data.Storable.Endian: [getLittleEndian] :: LittleEndian a -> a
+ Data.Storable.Endian: instance (Data.Storable.Endian.HasBigEndian a, Foreign.Storable.Storable a) => Foreign.Storable.Storable (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance (Data.Storable.Endian.HasLittleEndian a, Foreign.Storable.Storable a) => Foreign.Storable.Storable (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Int.Int16
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Int.Int32
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Int.Int64
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Types.Double
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Types.Float
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Word.Word16
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Word.Word32
+ Data.Storable.Endian: instance Data.Storable.Endian.HasBigEndian GHC.Word.Word64
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Int.Int16
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Int.Int32
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Int.Int64
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Types.Double
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Types.Float
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Word.Word16
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Word.Word32
+ Data.Storable.Endian: instance Data.Storable.Endian.HasLittleEndian GHC.Word.Word64
+ Data.Storable.Endian: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Enum.Enum a => GHC.Enum.Enum (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Enum.Enum a => GHC.Enum.Enum (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Float.Floating a => GHC.Float.Floating (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Float.Floating a => GHC.Float.Floating (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Float.RealFloat a => GHC.Float.RealFloat (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Float.RealFloat a => GHC.Float.RealFloat (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Generics.Generic (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Generics.Generic (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Num.Num a => GHC.Num.Num (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Num.Num a => GHC.Num.Num (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Read.Read a => GHC.Read.Read (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Read.Read a => GHC.Read.Read (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Real.Fractional a => GHC.Real.Fractional (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Real.Fractional a => GHC.Real.Fractional (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Real.Integral a => GHC.Real.Integral (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Real.Integral a => GHC.Real.Integral (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Real.Real a => GHC.Real.Real (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Real.Real a => GHC.Real.Real (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Real.RealFrac a => GHC.Real.RealFrac (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Real.RealFrac a => GHC.Real.RealFrac (Data.Storable.Endian.LittleEndian a)
+ Data.Storable.Endian: instance GHC.Show.Show a => GHC.Show.Show (Data.Storable.Endian.BigEndian a)
+ Data.Storable.Endian: instance GHC.Show.Show a => GHC.Show.Show (Data.Storable.Endian.LittleEndian a)
Files
- Data/Storable/Endian.hs +20/−11
- storable-endian.cabal +1/−1
Data/Storable/Endian.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE DeriveGeneric, GeneralizedNewtypeDeriving #-}+ ----------------------------------------------------------------------------- -- | -- Module : Data.Storable.Endian@@ -11,32 +13,41 @@ -- Storable instances with endianness. -- -module Data.Storable.Endian +module Data.Storable.Endian ( LittleEndian(..), BigEndian(..), HasLittleEndian(..), HasBigEndian(..)- ) + ) where import System.ByteOrder -import Foreign.Storable import Foreign.Ptr+import Foreign.Storable import Unsafe.Coerce -import Data.Word import Data.Bits+import Data.Word #if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__) import GHC.Base-import GHC.Word import GHC.Int+import GHC.Word #endif -newtype LittleEndian a = LE a-newtype BigEndian a = BE a+import GHC.Generics (Generic(..)) +newtype LittleEndian a = LE { getLittleEndian :: a }+ deriving ( Eq, Ord, Show, Read, Enum+ , Num, Integral, Fractional, Floating, Real, RealFrac, RealFloat+ , Generic)++newtype BigEndian a = BE { getBigEndian :: a }+ deriving ( Eq, Ord, Show, Read, Enum+ , Num, Integral, Fractional, Floating, Real, RealFrac, RealFloat+ , Generic)+ class HasLittleEndian a where peekLE :: Ptr a -> IO a pokeLE :: Ptr a -> a -> IO ()@@ -145,8 +156,8 @@ -- | Write a Word16 in big endian format putWord16be :: Ptr Word8 -> Word16 -> IO ()-putWord16be = if byteOrder == BigEndian - then \p w -> poke (castPtr p) w +putWord16be = if byteOrder == BigEndian+ then \p w -> poke (castPtr p) w else \p w -> do poke p (fromIntegral (shiftr_w16 w 8) :: Word8) poke (p `plusPtr` 1) (fromIntegral (w) :: Word8)@@ -407,5 +418,3 @@ shiftl_w32 = shiftL shiftl_w64 = shiftL #endif--
storable-endian.cabal view
@@ -1,5 +1,5 @@ Name: storable-endian-Version: 0.2.5+Version: 0.2.6 License: BSD3 License-file: LICENSE Copyright: Eugene Kirpichov, 2010