#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Ggit.Structs.DiffSimilarityMetric
(
DiffSimilarityMetric(..) ,
noDiffSimilarityMetric ,
#if ENABLE_OVERLOADING
DiffSimilarityMetricCopyMethodInfo ,
#endif
diffSimilarityMetricCopy ,
#if ENABLE_OVERLOADING
DiffSimilarityMetricFreeMethodInfo ,
#endif
diffSimilarityMetricFree ,
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
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
noDiffSimilarityMetric :: Maybe DiffSimilarityMetric
noDiffSimilarityMetric = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList DiffSimilarityMetric
type instance O.AttributeList DiffSimilarityMetric = DiffSimilarityMetricAttributeList
type DiffSimilarityMetricAttributeList = ('[ ] :: [(Symbol, *)])
#endif
foreign import ccall "ggit_diff_similarity_metric_new" ggit_diff_similarity_metric_new ::
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricFileSignatureCallback ->
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricBufferSignatureCallback ->
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricFreeSignatureCallback ->
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricSimilarityCallback ->
Ptr () ->
IO (Ptr DiffSimilarityMetric)
diffSimilarityMetricNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ggit.Callbacks.DiffSimilarityMetricFileSignatureCallback
-> Ggit.Callbacks.DiffSimilarityMetricBufferSignatureCallback
-> Ggit.Callbacks.DiffSimilarityMetricFreeSignatureCallback
-> Ggit.Callbacks.DiffSimilarityMetricSimilarityCallback
-> m 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
foreign import ccall "ggit_diff_similarity_metric_copy" ggit_diff_similarity_metric_copy ::
Ptr DiffSimilarityMetric ->
IO (Ptr DiffSimilarityMetric)
diffSimilarityMetricCopy ::
(B.CallStack.HasCallStack, MonadIO m) =>
DiffSimilarityMetric
-> m (Maybe DiffSimilarityMetric)
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
foreign import ccall "ggit_diff_similarity_metric_free" ggit_diff_similarity_metric_free ::
Ptr DiffSimilarityMetric ->
IO ()
diffSimilarityMetricFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
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