haskell-gi-base 0.20.1 → 0.20.2
raw patch · 5 files changed
+33/−15 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.GI.Base.BasicConversions: cstringToByteString :: CString -> IO ByteString
+ Data.GI.Base.BasicConversions: cstringToByteString :: HasCallStack => CString -> IO ByteString
- Data.GI.Base.BasicConversions: cstringToString :: CString -> IO String
+ Data.GI.Base.BasicConversions: cstringToString :: HasCallStack => CString -> IO String
- Data.GI.Base.BasicConversions: cstringToText :: CString -> IO Text
+ Data.GI.Base.BasicConversions: cstringToText :: HasCallStack => CString -> IO Text
- Data.GI.Base.BasicConversions: unpackFileNameArrayWithLength :: Integral a => a -> Ptr CString -> IO [String]
+ Data.GI.Base.BasicConversions: unpackFileNameArrayWithLength :: (HasCallStack, Integral a) => a -> Ptr CString -> IO [String]
- Data.GI.Base.BasicConversions: unpackUTF8CArrayWithLength :: Integral a => a -> Ptr CString -> IO [Text]
+ Data.GI.Base.BasicConversions: unpackUTF8CArrayWithLength :: (HasCallStack, Integral a) => a -> Ptr CString -> IO [Text]
- Data.GI.Base.BasicConversions: unpackZeroTerminatedFileNameArray :: Ptr CString -> IO [String]
+ Data.GI.Base.BasicConversions: unpackZeroTerminatedFileNameArray :: HasCallStack => Ptr CString -> IO [String]
- Data.GI.Base.BasicConversions: unpackZeroTerminatedUTF8CArray :: Ptr CString -> IO [Text]
+ Data.GI.Base.BasicConversions: unpackZeroTerminatedUTF8CArray :: HasCallStack => Ptr CString -> IO [Text]
- Data.GI.Base.Utils: checkUnexpectedNothing :: Text -> IO (Maybe a) -> IO a
+ Data.GI.Base.Utils: checkUnexpectedNothing :: HasCallStack => Text -> IO (Maybe a) -> IO a
Files
- ChangeLog.md +4/−0
- Data/GI/Base/BasicConversions.hsc +20/−11
- Data/GI/Base/GVariant.hsc +7/−2
- Data/GI/Base/Utils.hsc +1/−1
- haskell-gi-base.cabal +1/−1
ChangeLog.md view
@@ -1,3 +1,7 @@+### 0.20.2+++ Fix fromGVariant for empty arrays, see [#91](https://github.com/haskell-gi/haskell-gi/issues/91) for details.+ ### 0.20.1 + Add Data.GI.Base.CallStack, abstracting (and backporting to the
Data/GI/Base/BasicConversions.hsc view
@@ -1,4 +1,4 @@-{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE ScopedTypeVariables, ConstraintKinds, FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} module Data.GI.Base.BasicConversions ( gflagsToWord@@ -75,6 +75,7 @@ import qualified Data.ByteString.Internal as BI import Data.Maybe (fromMaybe) import Data.Text (Text)+import qualified Data.Text as T import qualified Data.Text.Foreign as TF import Foreign.Ptr (Ptr, plusPtr, nullPtr, nullFunPtr, castPtr)@@ -87,9 +88,11 @@ import Data.Bits (Bits, (.|.), (.&.), shift) import Data.GI.Base.BasicTypes+import Data.GI.Base.CallStack (HasCallStack) import Data.GI.Base.GHashTable (GEqualFunc, GHashFunc) import Data.GI.Base.ManagedPtr (copyBoxedPtr)-import Data.GI.Base.Utils (allocBytes, callocBytes, memcpy, freeMem)+import Data.GI.Base.Utils (allocBytes, callocBytes, memcpy, freeMem,+ checkUnexpectedReturnNULL) #include <glib-object.h> @@ -370,7 +373,7 @@ poke ptr cstring fill (ptr `plusPtr` sizeOf cstring) xs -unpackZeroTerminatedUTF8CArray :: Ptr CString -> IO [Text]+unpackZeroTerminatedUTF8CArray :: HasCallStack => Ptr CString -> IO [Text] unpackZeroTerminatedUTF8CArray listPtr = go listPtr where go :: Ptr CString -> IO [Text] go ptr = do@@ -380,7 +383,8 @@ else (:) <$> cstringToText cstring <*> go (ptr `plusPtr` sizeOf cstring) -unpackUTF8CArrayWithLength :: Integral a => a -> Ptr CString -> IO [Text]+unpackUTF8CArrayWithLength :: (HasCallStack, Integral a) =>+ a -> Ptr CString -> IO [Text] unpackUTF8CArrayWithLength n ptr = go (fromIntegral n) ptr where go :: Int -> Ptr CString -> IO [Text] go 0 _ = return []@@ -414,7 +418,7 @@ poke ptr cstring fill (ptr `plusPtr` sizeOf cstring) xs -unpackZeroTerminatedFileNameArray :: Ptr CString -> IO [String]+unpackZeroTerminatedFileNameArray :: HasCallStack => Ptr CString -> IO [String] unpackZeroTerminatedFileNameArray listPtr = go listPtr where go :: Ptr CString -> IO [String] go ptr = do@@ -424,7 +428,7 @@ else (:) <$> cstringToString cstring <*> go (ptr `plusPtr` sizeOf cstring) -unpackFileNameArrayWithLength :: Integral a =>+unpackFileNameArrayWithLength :: (HasCallStack, Integral a) => a -> Ptr CString -> IO [String] unpackFileNameArrayWithLength n ptr = go (fromIntegral n) ptr where go :: Int -> Ptr CString -> IO [String]@@ -442,8 +446,10 @@ stringToCString :: String -> IO CString stringToCString str = withCString str g_strdup -cstringToString :: CString -> IO String-cstringToString = peekCString+cstringToString :: HasCallStack => CString -> IO String+cstringToString cstr = do+ checkUnexpectedReturnNULL (T.pack "cstringToString") cstr+ peekCString cstr foreign import ccall "g_strndup" g_strndup :: CString -> #{type gsize} -> IO CString@@ -463,8 +469,9 @@ foreign import ccall "strlen" c_strlen :: CString -> IO (CSize) -cstringToText :: CString -> IO Text+cstringToText :: HasCallStack => CString -> IO Text cstringToText cstr = do+ checkUnexpectedReturnNULL (T.pack "cstringToText") cstr len <- c_strlen cstr let cstrlen = (cstr, fromIntegral len) TF.peekCStringLen cstrlen@@ -472,8 +479,10 @@ byteStringToCString :: ByteString -> IO CString byteStringToCString bs = B.useAsCString bs g_strdup -cstringToByteString :: CString -> IO ByteString-cstringToByteString = B.packCString+cstringToByteString :: HasCallStack => CString -> IO ByteString+cstringToByteString cstr = do+ checkUnexpectedReturnNULL (T.pack "cstringToByteString") cstr+ B.packCString cstr packPtrArray :: [Ptr a] -> IO (Ptr (Ptr a)) packPtrArray items = do
Data/GI/Base/GVariant.hsc view
@@ -636,8 +636,13 @@ gvariant_get_children :: (Ptr GVariant) -> IO [GVariant] gvariant_get_children vptr = do n_children <- g_variant_n_children vptr- mapM ((g_variant_get_child_value vptr) >=> wrapGVariantPtr)- [0..(n_children-1)]+ -- n_children is an unsigned type (Word64 in 64 bit+ -- architectures), so if it is 0 and we substract one we would+ -- wrap around to 2^64-1.+ if n_children /= 0+ then mapM ((g_variant_get_child_value vptr) >=> wrapGVariantPtr)+ [0..(n_children-1)]+ else return [] instance IsGVariant a => IsGVariant (Maybe a) where toGVariant = gvariantFromMaybe
Data/GI/Base/Utils.hsc view
@@ -193,7 +193,7 @@ -- | An annotated version of `fromJust`, which raises a -- `UnexpectedNullPointerReturn` in case it encounters a `Nothing`.-checkUnexpectedNothing :: T.Text -> IO (Maybe a) -> IO a+checkUnexpectedNothing :: HasCallStack => T.Text -> IO (Maybe a) -> IO a checkUnexpectedNothing fnName action = do result <- action case result of
haskell-gi-base.cabal view
@@ -1,5 +1,5 @@ name: haskell-gi-base-version: 0.20.1+version: 0.20.2 synopsis: Foundation for libraries generated by haskell-gi description: Foundation for libraries generated by haskell-gi homepage: https://github.com/haskell-gi/haskell-gi-base