{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Vips.Objects.Foreign
(
#if defined(ENABLE_OVERLOADING)
ForeignGetSuffixesMethodInfo ,
#endif
Foreign(..) ,
IsForeign ,
toForeign ,
#if defined(ENABLE_OVERLOADING)
ResolveForeignMethod ,
#endif
foreignFindLoad ,
foreignFindLoadBuffer ,
foreignFindLoadSource ,
foreignFindSave ,
foreignFindSaveBuffer ,
foreignFindSaveTarget ,
foreignIsA ,
foreignIsABuffer ,
foreignIsASource ,
foreignMap ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Vips.Callbacks as Vips.Callbacks
import {-# SOURCE #-} qualified GI.Vips.Objects.Object as Vips.Object
import {-# SOURCE #-} qualified GI.Vips.Objects.Operation as Vips.Operation
import {-# SOURCE #-} qualified GI.Vips.Structs.Source as Vips.Source
newtype Foreign = Foreign (SP.ManagedPtr Foreign)
deriving (Foreign -> Foreign -> Bool
(Foreign -> Foreign -> Bool)
-> (Foreign -> Foreign -> Bool) -> Eq Foreign
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Foreign -> Foreign -> Bool
== :: Foreign -> Foreign -> Bool
$c/= :: Foreign -> Foreign -> Bool
/= :: Foreign -> Foreign -> Bool
Eq)
instance SP.ManagedPtrNewtype Foreign where
toManagedPtr :: Foreign -> ManagedPtr Foreign
toManagedPtr (Foreign ManagedPtr Foreign
p) = ManagedPtr Foreign
p
foreign import ccall "vips_foreign_get_type"
c_vips_foreign_get_type :: IO B.Types.GType
instance B.Types.TypedObject Foreign where
glibType :: IO GType
glibType = IO GType
c_vips_foreign_get_type
instance B.Types.GObject Foreign
class (SP.GObject o, O.IsDescendantOf Foreign o) => IsForeign o
instance (SP.GObject o, O.IsDescendantOf Foreign o) => IsForeign o
instance O.HasParentTypes Foreign
type instance O.ParentTypes Foreign = '[Vips.Operation.Operation, Vips.Object.Object, GObject.Object.Object]
toForeign :: (MIO.MonadIO m, IsForeign o) => o -> m Foreign
toForeign :: forall (m :: * -> *) o. (MonadIO m, IsForeign o) => o -> m Foreign
toForeign = IO Foreign -> m Foreign
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Foreign -> m Foreign) -> (o -> IO Foreign) -> o -> m Foreign
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr Foreign -> Foreign) -> o -> IO Foreign
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr Foreign -> Foreign
Foreign
instance B.GValue.IsGValue (Maybe Foreign) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_vips_foreign_get_type
gvalueSet_ :: Ptr GValue -> Maybe Foreign -> IO ()
gvalueSet_ Ptr GValue
gv Maybe Foreign
P.Nothing = Ptr GValue -> Ptr Foreign -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr Foreign
forall a. Ptr a
FP.nullPtr :: FP.Ptr Foreign)
gvalueSet_ Ptr GValue
gv (P.Just Foreign
obj) = Foreign -> (Ptr Foreign -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Foreign
obj (Ptr GValue -> Ptr Foreign -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe Foreign)
gvalueGet_ Ptr GValue
gv = do
Ptr Foreign
ptr <- Ptr GValue -> IO (Ptr Foreign)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr Foreign)
if Ptr Foreign
ptr Ptr Foreign -> Ptr Foreign -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr Foreign
forall a. Ptr a
FP.nullPtr
then Foreign -> Maybe Foreign
forall a. a -> Maybe a
P.Just (Foreign -> Maybe Foreign) -> IO Foreign -> IO (Maybe Foreign)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr Foreign -> Foreign) -> Ptr Foreign -> IO Foreign
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr Foreign -> Foreign
Foreign Ptr Foreign
ptr
else Maybe Foreign -> IO (Maybe Foreign)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Foreign
forall a. Maybe a
P.Nothing
#if defined(ENABLE_OVERLOADING)
type family ResolveForeignMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveForeignMethod "argumentIsset" o = Vips.Object.ObjectArgumentIssetMethodInfo
ResolveForeignMethod "argumentNeedsstring" o = Vips.Object.ObjectArgumentNeedsstringMethodInfo
ResolveForeignMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveForeignMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveForeignMethod "build" o = Vips.Object.ObjectBuildMethodInfo
ResolveForeignMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveForeignMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveForeignMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveForeignMethod "invalidate" o = Vips.Operation.OperationInvalidateMethodInfo
ResolveForeignMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveForeignMethod "localCb" o = Vips.Object.ObjectLocalCbMethodInfo
ResolveForeignMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveForeignMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveForeignMethod "preclose" o = Vips.Object.ObjectPrecloseMethodInfo
ResolveForeignMethod "printDump" o = Vips.Object.ObjectPrintDumpMethodInfo
ResolveForeignMethod "printName" o = Vips.Object.ObjectPrintNameMethodInfo
ResolveForeignMethod "printSummary" o = Vips.Object.ObjectPrintSummaryMethodInfo
ResolveForeignMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveForeignMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveForeignMethod "rewind" o = Vips.Object.ObjectRewindMethodInfo
ResolveForeignMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveForeignMethod "sanity" o = Vips.Object.ObjectSanityMethodInfo
ResolveForeignMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveForeignMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveForeignMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveForeignMethod "toString" o = Vips.Object.ObjectToStringMethodInfo
ResolveForeignMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveForeignMethod "unrefOutputs" o = Vips.Object.ObjectUnrefOutputsMethodInfo
ResolveForeignMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveForeignMethod "getArgumentFlags" o = Vips.Object.ObjectGetArgumentFlagsMethodInfo
ResolveForeignMethod "getArgumentPriority" o = Vips.Object.ObjectGetArgumentPriorityMethodInfo
ResolveForeignMethod "getArgumentToString" o = Vips.Object.ObjectGetArgumentToStringMethodInfo
ResolveForeignMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveForeignMethod "getDescription" o = Vips.Object.ObjectGetDescriptionMethodInfo
ResolveForeignMethod "getFlags" o = Vips.Operation.OperationGetFlagsMethodInfo
ResolveForeignMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveForeignMethod "setArgumentFromString" o = Vips.Object.ObjectSetArgumentFromStringMethodInfo
ResolveForeignMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveForeignMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
ResolveForeignMethod "setFromString" o = Vips.Object.ObjectSetFromStringMethodInfo
ResolveForeignMethod "setRequired" o = Vips.Object.ObjectSetRequiredMethodInfo
ResolveForeignMethod "setStatic" o = Vips.Object.ObjectSetStaticMethodInfo
ResolveForeignMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveForeignMethod t Foreign, O.OverloadedMethod info Foreign p) => OL.IsLabel t (Foreign -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveForeignMethod t Foreign, O.OverloadedMethod info Foreign p, R.HasField t Foreign p) => R.HasField t Foreign p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveForeignMethod t Foreign, O.OverloadedMethodInfo info Foreign) => OL.IsLabel t (O.MethodProxy info Foreign) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList Foreign
type instance O.AttributeList Foreign = ForeignAttributeList
type ForeignAttributeList = ('[ '("description", Vips.Object.ObjectDescriptionPropertyInfo), '("nickname", Vips.Object.ObjectNicknamePropertyInfo)] :: [(Symbol, DK.Type)])
#endif
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
type instance O.SignalList Foreign = ForeignSignalList
type ForeignSignalList = ('[ '("close", Vips.Object.ObjectCloseSignalInfo), '("invalidate", Vips.Operation.OperationInvalidateSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("postbuild", Vips.Object.ObjectPostbuildSignalInfo), '("postclose", Vips.Object.ObjectPostcloseSignalInfo), '("preclose", Vips.Object.ObjectPrecloseSignalInfo)] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "vips_foreign_find_load" vips_foreign_find_load ::
CString ->
IO CString
foreignFindLoad ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> m T.Text
foreignFindLoad :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Text -> m Text
foreignFindLoad Text
filename = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
CString
filename' <- Text -> IO CString
textToCString Text
filename
CString
result <- CString -> IO CString
vips_foreign_find_load CString
filename'
Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"foreignFindLoad" CString
result
Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
filename'
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_find_load_buffer" vips_foreign_find_load_buffer ::
Ptr Word8 ->
Word64 ->
IO CString
foreignFindLoadBuffer ::
(B.CallStack.HasCallStack, MonadIO m) =>
ByteString
-> m T.Text
foreignFindLoadBuffer :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
ByteString -> m Text
foreignFindLoadBuffer ByteString
data_ = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
let size :: Word64
size = Int -> Word64
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word64) -> Int -> Word64
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
data_
Ptr Word8
data_' <- ByteString -> IO (Ptr Word8)
packByteString ByteString
data_
CString
result <- Ptr Word8 -> Word64 -> IO CString
vips_foreign_find_load_buffer Ptr Word8
data_' Word64
size
Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"foreignFindLoadBuffer" CString
result
Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
Ptr Word8 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word8
data_'
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_find_load_source" vips_foreign_find_load_source ::
Ptr Vips.Source.Source ->
IO CString
foreignFindLoadSource ::
(B.CallStack.HasCallStack, MonadIO m) =>
Vips.Source.Source
-> m T.Text
foreignFindLoadSource :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Source -> m Text
foreignFindLoadSource Source
source = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
Ptr Source
source' <- Source -> IO (Ptr Source)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Source
source
CString
result <- Ptr Source -> IO CString
vips_foreign_find_load_source Ptr Source
source'
Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"foreignFindLoadSource" CString
result
Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
Source -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Source
source
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_find_save" vips_foreign_find_save ::
CString ->
IO CString
foreignFindSave ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> m (Maybe T.Text)
foreignFindSave :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> m (Maybe Text)
foreignFindSave Text
filename = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
CString
filename' <- Text -> IO CString
textToCString Text
filename
CString
result <- CString -> IO CString
vips_foreign_find_save CString
filename'
Maybe Text
maybeResult <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
Text
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
filename'
Maybe Text -> IO (Maybe Text)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_find_save_buffer" vips_foreign_find_save_buffer ::
CString ->
IO CString
foreignFindSaveBuffer ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> m (Maybe T.Text)
foreignFindSaveBuffer :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> m (Maybe Text)
foreignFindSaveBuffer Text
suffix = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
CString
suffix' <- Text -> IO CString
textToCString Text
suffix
CString
result <- CString -> IO CString
vips_foreign_find_save_buffer CString
suffix'
Maybe Text
maybeResult <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
Text
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
suffix'
Maybe Text -> IO (Maybe Text)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_find_save_target" vips_foreign_find_save_target ::
CString ->
IO CString
foreignFindSaveTarget ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> m (Maybe T.Text)
foreignFindSaveTarget :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> m (Maybe Text)
foreignFindSaveTarget Text
suffix = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
CString
suffix' <- Text -> IO CString
textToCString Text
suffix
CString
result <- CString -> IO CString
vips_foreign_find_save_target CString
suffix'
Maybe Text
maybeResult <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
Text
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
suffix'
Maybe Text -> IO (Maybe Text)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
data ForeignGetSuffixesMethodInfo
instance (p ~ (), o ~ O.UnsupportedMethodError "getSuffixes" Foreign) => O.OverloadedMethod ForeignGetSuffixesMethodInfo o p where
overloadedMethod = undefined
instance (o ~ O.UnsupportedMethodError "getSuffixes" Foreign) => O.OverloadedMethodInfo ForeignGetSuffixesMethodInfo o where
overloadedMethodInfo = undefined
#endif
foreign import ccall "vips_foreign_is_a" vips_foreign_is_a ::
CString ->
CString ->
IO CInt
foreignIsA ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> T.Text
-> m Bool
foreignIsA :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> Text -> m Bool
foreignIsA Text
loader Text
filename = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
CString
loader' <- Text -> IO CString
textToCString Text
loader
CString
filename' <- Text -> IO CString
textToCString Text
filename
CInt
result <- CString -> CString -> IO CInt
vips_foreign_is_a CString
loader' CString
filename'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
loader'
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
filename'
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_is_a_buffer" vips_foreign_is_a_buffer ::
CString ->
Ptr Word8 ->
Word64 ->
IO CInt
foreignIsABuffer ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> ByteString
-> m Bool
foreignIsABuffer :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> ByteString -> m Bool
foreignIsABuffer Text
loader ByteString
data_ = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
let size :: Word64
size = Int -> Word64
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word64) -> Int -> Word64
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
data_
CString
loader' <- Text -> IO CString
textToCString Text
loader
Ptr Word8
data_' <- ByteString -> IO (Ptr Word8)
packByteString ByteString
data_
CInt
result <- CString -> Ptr Word8 -> Word64 -> IO CInt
vips_foreign_is_a_buffer CString
loader' Ptr Word8
data_' Word64
size
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
loader'
Ptr Word8 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word8
data_'
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_is_a_source" vips_foreign_is_a_source ::
CString ->
Ptr Vips.Source.Source ->
IO CInt
foreignIsASource ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> Vips.Source.Source
-> m Bool
foreignIsASource :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> Source -> m Bool
foreignIsASource Text
loader Source
source = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
CString
loader' <- Text -> IO CString
textToCString Text
loader
Ptr Source
source' <- Source -> IO (Ptr Source)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Source
source
CInt
result <- CString -> Ptr Source -> IO CInt
vips_foreign_is_a_source CString
loader' Ptr Source
source'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Source -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Source
source
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
loader'
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "vips_foreign_map" vips_foreign_map ::
CString ->
FunPtr Vips.Callbacks.C_SListMap2Fn ->
Ptr () ->
Ptr () ->
IO (Ptr ())
foreignMap ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> Vips.Callbacks.SListMap2Fn
-> Ptr ()
-> Ptr ()
-> m (Ptr ())
foreignMap :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> SListMap2Fn -> Ptr () -> Ptr () -> m (Ptr ())
foreignMap Text
base SListMap2Fn
fn Ptr ()
a Ptr ()
b = IO (Ptr ()) -> m (Ptr ())
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Ptr ()) -> m (Ptr ())) -> IO (Ptr ()) -> m (Ptr ())
forall a b. (a -> b) -> a -> b
$ do
CString
base' <- Text -> IO CString
textToCString Text
base
FunPtr SListMap2Fn
fn' <- SListMap2Fn -> IO (FunPtr SListMap2Fn)
Vips.Callbacks.mk_SListMap2Fn (Maybe (Ptr (FunPtr SListMap2Fn)) -> SListMap2Fn -> SListMap2Fn
Vips.Callbacks.wrap_SListMap2Fn Maybe (Ptr (FunPtr SListMap2Fn))
forall a. Maybe a
Nothing SListMap2Fn
fn)
Ptr ()
result <- CString -> FunPtr SListMap2Fn -> Ptr () -> Ptr () -> IO (Ptr ())
vips_foreign_map CString
base' FunPtr SListMap2Fn
fn' Ptr ()
a Ptr ()
b
Ptr Any -> IO ()
forall a. Ptr a -> IO ()
safeFreeFunPtr (Ptr Any -> IO ()) -> Ptr Any -> IO ()
forall a b. (a -> b) -> a -> b
$ FunPtr SListMap2Fn -> Ptr Any
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr SListMap2Fn
fn'
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
base'
Ptr () -> IO (Ptr ())
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr ()
result
#if defined(ENABLE_OVERLOADING)
#endif