{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Represents a similarity metric. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Ggit.Structs.DiffSimilarityMetric ( -- * Exported types DiffSimilarityMetric(..) , noDiffSimilarityMetric , -- * Methods -- ** copy #method:copy# #if ENABLE_OVERLOADING DiffSimilarityMetricCopyMethodInfo , #endif diffSimilarityMetricCopy , -- ** free #method:free# #if ENABLE_OVERLOADING DiffSimilarityMetricFreeMethodInfo , #endif diffSimilarityMetricFree , -- ** new #method:new# diffSimilarityMetricNew , ) 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.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError 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.Text as T 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 GI.Ggit.Callbacks as Ggit.Callbacks -- | Memory-managed wrapper type. newtype DiffSimilarityMetric = DiffSimilarityMetric (ManagedPtr DiffSimilarityMetric) foreign import ccall "ggit_diff_similarity_metric_get_type" c_ggit_diff_similarity_metric_get_type :: IO GType instance BoxedObject DiffSimilarityMetric where boxedType _ = c_ggit_diff_similarity_metric_get_type -- | A convenience alias for `Nothing` :: `Maybe` `DiffSimilarityMetric`. noDiffSimilarityMetric :: Maybe DiffSimilarityMetric noDiffSimilarityMetric = Nothing #if ENABLE_OVERLOADING instance O.HasAttributeList DiffSimilarityMetric type instance O.AttributeList DiffSimilarityMetric = DiffSimilarityMetricAttributeList type DiffSimilarityMetricAttributeList = ('[ ] :: [(Symbol, *)]) #endif -- method DiffSimilarityMetric::new -- method type : Constructor -- Args : [Arg {argCName = "file_signature", argType = TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricFileSignatureCallback"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffSimilarityMetricFileSignature.", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "buffer_signature", argType = TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricBufferSignatureCallback"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffSimilarityMetricBufferSignature.", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "free_signature", argType = TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricFreeSignatureCallback"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffSimilarityMetricFreeSignature.", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "similarity", argType = TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricSimilarityCallback"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffSimilarityMetricSimilarity.", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "passed as user_data to the previous parameters.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetric"})) -- throws : False -- Skip return : False foreign import ccall "ggit_diff_similarity_metric_new" ggit_diff_similarity_metric_new :: FunPtr Ggit.Callbacks.C_DiffSimilarityMetricFileSignatureCallback -> -- file_signature : TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricFileSignatureCallback"}) FunPtr Ggit.Callbacks.C_DiffSimilarityMetricBufferSignatureCallback -> -- buffer_signature : TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricBufferSignatureCallback"}) FunPtr Ggit.Callbacks.C_DiffSimilarityMetricFreeSignatureCallback -> -- free_signature : TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricFreeSignatureCallback"}) FunPtr Ggit.Callbacks.C_DiffSimilarityMetricSimilarityCallback -> -- similarity : TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetricSimilarityCallback"}) Ptr () -> -- user_data : TBasicType TPtr IO (Ptr DiffSimilarityMetric) {- | Creates a new 'GI.Ggit.Structs.DiffSimilarityMetric.DiffSimilarityMetric'. -} diffSimilarityMetricNew :: (B.CallStack.HasCallStack, MonadIO m) => Ggit.Callbacks.DiffSimilarityMetricFileSignatureCallback {- ^ /@fileSignature@/: a @/GgitDiffSimilarityMetricFileSignature/@. -} -> Ggit.Callbacks.DiffSimilarityMetricBufferSignatureCallback {- ^ /@bufferSignature@/: a @/GgitDiffSimilarityMetricBufferSignature/@. -} -> Ggit.Callbacks.DiffSimilarityMetricFreeSignatureCallback {- ^ /@freeSignature@/: a @/GgitDiffSimilarityMetricFreeSignature/@. -} -> Ggit.Callbacks.DiffSimilarityMetricSimilarityCallback {- ^ /@similarity@/: a @/GgitDiffSimilarityMetricSimilarity/@. -} -> m DiffSimilarityMetric {- ^ __Returns:__ a newly allocated 'GI.Ggit.Structs.DiffSimilarityMetric.DiffSimilarityMetric'. -} diffSimilarityMetricNew fileSignature bufferSignature freeSignature similarity = liftIO $ do fileSignature' <- Ggit.Callbacks.mk_DiffSimilarityMetricFileSignatureCallback (Ggit.Callbacks.wrap_DiffSimilarityMetricFileSignatureCallback Nothing (Ggit.Callbacks.drop_closures_DiffSimilarityMetricFileSignatureCallback fileSignature)) bufferSignature' <- Ggit.Callbacks.mk_DiffSimilarityMetricBufferSignatureCallback (Ggit.Callbacks.wrap_DiffSimilarityMetricBufferSignatureCallback Nothing (Ggit.Callbacks.drop_closures_DiffSimilarityMetricBufferSignatureCallback bufferSignature)) freeSignature' <- Ggit.Callbacks.mk_DiffSimilarityMetricFreeSignatureCallback (Ggit.Callbacks.wrap_DiffSimilarityMetricFreeSignatureCallback Nothing (Ggit.Callbacks.drop_closures_DiffSimilarityMetricFreeSignatureCallback freeSignature)) similarity' <- Ggit.Callbacks.mk_DiffSimilarityMetricSimilarityCallback (Ggit.Callbacks.wrap_DiffSimilarityMetricSimilarityCallback Nothing (Ggit.Callbacks.drop_closures_DiffSimilarityMetricSimilarityCallback similarity)) let userData = nullPtr result <- ggit_diff_similarity_metric_new fileSignature' bufferSignature' freeSignature' similarity' userData checkUnexpectedReturnNULL "diffSimilarityMetricNew" result result' <- (wrapBoxed DiffSimilarityMetric) result safeFreeFunPtr $ castFunPtrToPtr fileSignature' safeFreeFunPtr $ castFunPtrToPtr bufferSignature' safeFreeFunPtr $ castFunPtrToPtr freeSignature' safeFreeFunPtr $ castFunPtrToPtr similarity' return result' #if ENABLE_OVERLOADING #endif -- method DiffSimilarityMetric::copy -- method type : OrdinaryMethod -- Args : [Arg {argCName = "metric", argType = TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetric"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffSimilarityMetric.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetric"})) -- throws : False -- Skip return : False foreign import ccall "ggit_diff_similarity_metric_copy" ggit_diff_similarity_metric_copy :: Ptr DiffSimilarityMetric -> -- metric : TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetric"}) IO (Ptr DiffSimilarityMetric) {- | Copies /@metric@/ into a newly allocated 'GI.Ggit.Structs.DiffSimilarityMetric.DiffSimilarityMetric'. -} diffSimilarityMetricCopy :: (B.CallStack.HasCallStack, MonadIO m) => DiffSimilarityMetric {- ^ /@metric@/: a 'GI.Ggit.Structs.DiffSimilarityMetric.DiffSimilarityMetric'. -} -> m (Maybe DiffSimilarityMetric) {- ^ __Returns:__ a newly allocated 'GI.Ggit.Structs.DiffSimilarityMetric.DiffSimilarityMetric' or 'Nothing'. -} diffSimilarityMetricCopy metric = liftIO $ do metric' <- unsafeManagedPtrGetPtr metric result <- ggit_diff_similarity_metric_copy metric' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed DiffSimilarityMetric) result' return result'' touchManagedPtr metric return maybeResult #if ENABLE_OVERLOADING data DiffSimilarityMetricCopyMethodInfo instance (signature ~ (m (Maybe DiffSimilarityMetric)), MonadIO m) => O.MethodInfo DiffSimilarityMetricCopyMethodInfo DiffSimilarityMetric signature where overloadedMethod _ = diffSimilarityMetricCopy #endif -- method DiffSimilarityMetric::free -- method type : OrdinaryMethod -- Args : [Arg {argCName = "metric", argType = TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetric"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffSimilarityMetric.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "ggit_diff_similarity_metric_free" ggit_diff_similarity_metric_free :: Ptr DiffSimilarityMetric -> -- metric : TInterface (Name {namespace = "Ggit", name = "DiffSimilarityMetric"}) IO () {- | Frees /@metric@/. -} diffSimilarityMetricFree :: (B.CallStack.HasCallStack, MonadIO m) => DiffSimilarityMetric {- ^ /@metric@/: a 'GI.Ggit.Structs.DiffSimilarityMetric.DiffSimilarityMetric'. -} -> m () diffSimilarityMetricFree metric = liftIO $ do metric' <- unsafeManagedPtrGetPtr metric ggit_diff_similarity_metric_free metric' touchManagedPtr metric return () #if ENABLE_OVERLOADING data DiffSimilarityMetricFreeMethodInfo instance (signature ~ (m ()), MonadIO m) => O.MethodInfo DiffSimilarityMetricFreeMethodInfo DiffSimilarityMetric signature where overloadedMethod _ = diffSimilarityMetricFree #endif #if ENABLE_OVERLOADING type family ResolveDiffSimilarityMetricMethod (t :: Symbol) (o :: *) :: * where ResolveDiffSimilarityMetricMethod "copy" o = DiffSimilarityMetricCopyMethodInfo ResolveDiffSimilarityMetricMethod "free" o = DiffSimilarityMetricFreeMethodInfo ResolveDiffSimilarityMetricMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveDiffSimilarityMetricMethod t DiffSimilarityMetric, O.MethodInfo info DiffSimilarityMetric p) => OL.IsLabel t (DiffSimilarityMetric -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif