data-endian 0.0.1 → 0.1
raw patch · 3 files changed
+55/−25 lines, 3 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.Endian: BigEndian :: Endian
+ Data.Endian: LittleEndian :: Endian
+ Data.Endian: data Endian
+ Data.Endian: instance Bounded Endian
+ Data.Endian: instance Constructor C1_0Endian
+ Data.Endian: instance Constructor C1_1Endian
+ Data.Endian: instance Data Endian
+ Data.Endian: instance Datatype D1Endian
+ Data.Endian: instance Enum Endian
+ Data.Endian: instance Eq Endian
+ Data.Endian: instance Generic Endian
+ Data.Endian: instance Ix Endian
+ Data.Endian: instance Ord Endian
+ Data.Endian: instance Read Endian
+ Data.Endian: instance Show Endian
+ Data.Endian: instance Typeable Endian
+ Data.Endian: isBigEndian :: Endian -> Bool
+ Data.Endian: isLittleEndian :: Endian -> Bool
Files
- LICENSE +1/−1
- data-endian.cabal +3/−4
- src/Data/Endian.hs +51/−20
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2011, Mikhail Vorozhtsov+Copyright (c) 2011-2014, Mikhail Vorozhtsov All rights reserved. Redistribution and use in source and binary forms, with or without
data-endian.cabal view
@@ -1,5 +1,5 @@ Name: data-endian-Version: 0.0.1+Version: 0.1 Category: Data Stability: experimental Synopsis: Endian-sensitive data@@ -11,7 +11,7 @@ Author: Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com> Maintainer: Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com>-Copyright: 2011 Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com>+Copyright: 2011-2014 Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com> License: BSD3 License-File: LICENSE @@ -23,9 +23,8 @@ Location: https://github.com/mvv/data-endian.git Library- Build-Depends: base < 5+ Build-Depends: base >= 4 && < 5 Hs-Source-Dirs: src GHC-Options: -Wall Exposed-Modules: Data.Endian-
src/Data/Endian.hs view
@@ -1,14 +1,27 @@ {-# LANGUAGE UnicodeSyntax #-} {-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveDataTypeable #-}+#if MIN_VERSION_base(4,6,0)+{-# LANGUAGE DeriveGeneric #-}+#endif -module Data.Endian (- EndianSensitive(..),- toBigEndian,- fromBigEndian,- toLittleEndian,- fromLittleEndian+module Data.Endian+ ( Endian(..)+ , isLittleEndian+ , isBigEndian+ , EndianSensitive(..)+ , toLittleEndian+ , fromLittleEndian+ , toBigEndian+ , fromBigEndian ) where +import Data.Typeable (Typeable)+import Data.Data (Data)+#if MIN_VERSION_base(4,6,0)+import GHC.Generics (Generic)+#endif+import Data.Ix (Ix) import Data.Int import Data.Word import Data.Bits@@ -18,35 +31,54 @@ #include <HsBaseConfig.h> --- | Raw, endian-sensitive data+-- | Endianness.+data Endian = LittleEndian -- ^ Little-endian+ | BigEndian -- ^ Big-endian+ deriving (Typeable, Data, Show, Read,+#if MIN_VERSION_base(4,6,0)+ Generic,+#endif+ Eq, Ord, Bounded, Enum, Ix)++-- | Return 'True' if the supplied value is 'LittleEndian'.+isLittleEndian ∷ Endian → Bool+isLittleEndian LittleEndian = True+isLittleEndian BigEndian = False++-- | Return 'True' if the supplied value is 'BigEndian'.+isBigEndian ∷ Endian → Bool+isBigEndian LittleEndian = False+isBigEndian BigEndian = True++-- | Raw, endian-sensitive data. class EndianSensitive α where- -- | Change the endianness of the argument+ -- | Change the endianness of the argument. swapEndian ∷ α → α --- | Convert from the native format to big-endian-toBigEndian ∷ EndianSensitive α ⇒ α → α--- | Convert from big-endian to the native format-fromBigEndian ∷ EndianSensitive α ⇒ α → α--- | Convert from the native format to little-endian+-- | Convert from the native format to little-endian. toLittleEndian ∷ EndianSensitive α ⇒ α → α--- | Convert from little-endian to the native format+-- | Convert from little-endian to the native format. fromLittleEndian ∷ EndianSensitive α ⇒ α → α+-- | Convert from the native format to big-endian.+toBigEndian ∷ EndianSensitive α ⇒ α → α+-- | Convert from big-endian to the native format.+fromBigEndian ∷ EndianSensitive α ⇒ α → α #ifdef WORDS_BIGENDIAN-toBigEndian = id toLittleEndian = swapEndian+toBigEndian = id #else-toBigEndian = swapEndian toLittleEndian = id+toBigEndian = swapEndian #endif -fromBigEndian = toBigEndian fromLittleEndian = toLittleEndian+fromBigEndian = toBigEndian -{-# INLINE toBigEndian #-}-{-# INLINE fromBigEndian #-} {-# INLINE toLittleEndian #-} {-# INLINE fromLittleEndian #-}+{-# INLINE toBigEndian #-}+{-# INLINE fromBigEndian #-} instance EndianSensitive α ⇒ EndianSensitive [α] where swapEndian = map swapEndian@@ -214,4 +246,3 @@ . fromIntegral {-# INLINE swapEndian #-} #endif-