{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Structure representing an entry in the \"ostree.sizes\" commit metadata. Each
-- entry corresponds to an object in the associated commit.
-- 
-- /Since: 2020.1/

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.OSTree.Structs.CommitSizesEntry
    (

-- * Exported types
    CommitSizesEntry(..)                    ,
    newZeroCommitSizesEntry                 ,
    noCommitSizesEntry                      ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveCommitSizesEntryMethod           ,
#endif


-- ** copy #method:copy#

#if defined(ENABLE_OVERLOADING)
    CommitSizesEntryCopyMethodInfo          ,
#endif
    commitSizesEntryCopy                    ,


-- ** free #method:free#

#if defined(ENABLE_OVERLOADING)
    CommitSizesEntryFreeMethodInfo          ,
#endif
    commitSizesEntryFree                    ,


-- ** new #method:new#

    commitSizesEntryNew                     ,




 -- * Properties
-- ** archived #attr:archived#
-- | compressed object size

#if defined(ENABLE_OVERLOADING)
    commitSizesEntry_archived               ,
#endif
    getCommitSizesEntryArchived             ,
    setCommitSizesEntryArchived             ,


-- ** checksum #attr:checksum#
-- | object checksum

    clearCommitSizesEntryChecksum           ,
#if defined(ENABLE_OVERLOADING)
    commitSizesEntry_checksum               ,
#endif
    getCommitSizesEntryChecksum             ,
    setCommitSizesEntryChecksum             ,


-- ** objtype #attr:objtype#
-- | object type

#if defined(ENABLE_OVERLOADING)
    commitSizesEntry_objtype                ,
#endif
    getCommitSizesEntryObjtype              ,
    setCommitSizesEntryObjtype              ,


-- ** unpacked #attr:unpacked#
-- | unpacked object size

#if defined(ENABLE_OVERLOADING)
    commitSizesEntry_unpacked               ,
#endif
    getCommitSizesEntryUnpacked             ,
    setCommitSizesEntryUnpacked             ,




    ) 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.GI.Base.Signals as B.Signals
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 {-# SOURCE #-} qualified GI.OSTree.Enums as OSTree.Enums

-- | Memory-managed wrapper type.
newtype CommitSizesEntry = CommitSizesEntry (ManagedPtr CommitSizesEntry)
    deriving (Eq)
foreign import ccall "ostree_commit_sizes_entry_get_type" c_ostree_commit_sizes_entry_get_type ::
    IO GType

instance BoxedObject CommitSizesEntry where
    boxedType _ = c_ostree_commit_sizes_entry_get_type

-- | Convert 'CommitSizesEntry' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue CommitSizesEntry where
    toGValue o = do
        gtype <- c_ostree_commit_sizes_entry_get_type
        B.ManagedPtr.withManagedPtr o (B.GValue.buildGValue gtype B.GValue.set_boxed)

    fromGValue gv = do
        ptr <- B.GValue.get_boxed gv :: IO (Ptr CommitSizesEntry)
        B.ManagedPtr.newBoxed CommitSizesEntry ptr



-- | Construct a `CommitSizesEntry` struct initialized to zero.
newZeroCommitSizesEntry :: MonadIO m => m CommitSizesEntry
newZeroCommitSizesEntry = liftIO $ callocBoxedBytes 24 >>= wrapBoxed CommitSizesEntry

instance tag ~ 'AttrSet => Constructible CommitSizesEntry tag where
    new _ attrs = do
        o <- newZeroCommitSizesEntry
        GI.Attributes.set o attrs
        return o


-- | A convenience alias for `Nothing` :: `Maybe` `CommitSizesEntry`.
noCommitSizesEntry :: Maybe CommitSizesEntry
noCommitSizesEntry = Nothing

-- | Get the value of the “@checksum@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' commitSizesEntry #checksum
-- @
getCommitSizesEntryChecksum :: MonadIO m => CommitSizesEntry -> m (Maybe T.Text)
getCommitSizesEntryChecksum s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CString
    result <- SP.convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

-- | Set the value of the “@checksum@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' commitSizesEntry [ #checksum 'Data.GI.Base.Attributes.:=' value ]
-- @
setCommitSizesEntryChecksum :: MonadIO m => CommitSizesEntry -> CString -> m ()
setCommitSizesEntryChecksum s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: CString)

-- | Set the value of the “@checksum@” field to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #checksum
-- @
clearCommitSizesEntryChecksum :: MonadIO m => CommitSizesEntry -> m ()
clearCommitSizesEntryChecksum s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (FP.nullPtr :: CString)

#if defined(ENABLE_OVERLOADING)
data CommitSizesEntryChecksumFieldInfo
instance AttrInfo CommitSizesEntryChecksumFieldInfo where
    type AttrBaseTypeConstraint CommitSizesEntryChecksumFieldInfo = (~) CommitSizesEntry
    type AttrAllowedOps CommitSizesEntryChecksumFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint CommitSizesEntryChecksumFieldInfo = (~) CString
    type AttrTransferTypeConstraint CommitSizesEntryChecksumFieldInfo = (~)CString
    type AttrTransferType CommitSizesEntryChecksumFieldInfo = CString
    type AttrGetType CommitSizesEntryChecksumFieldInfo = Maybe T.Text
    type AttrLabel CommitSizesEntryChecksumFieldInfo = "checksum"
    type AttrOrigin CommitSizesEntryChecksumFieldInfo = CommitSizesEntry
    attrGet = getCommitSizesEntryChecksum
    attrSet = setCommitSizesEntryChecksum
    attrConstruct = undefined
    attrClear = clearCommitSizesEntryChecksum
    attrTransfer _ v = do
        return v

commitSizesEntry_checksum :: AttrLabelProxy "checksum"
commitSizesEntry_checksum = AttrLabelProxy

#endif


-- | Get the value of the “@objtype@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' commitSizesEntry #objtype
-- @
getCommitSizesEntryObjtype :: MonadIO m => CommitSizesEntry -> m OSTree.Enums.ObjectType
getCommitSizesEntryObjtype s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

-- | Set the value of the “@objtype@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' commitSizesEntry [ #objtype 'Data.GI.Base.Attributes.:=' value ]
-- @
setCommitSizesEntryObjtype :: MonadIO m => CommitSizesEntry -> OSTree.Enums.ObjectType -> m ()
setCommitSizesEntryObjtype s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 4) (val' :: CUInt)

#if defined(ENABLE_OVERLOADING)
data CommitSizesEntryObjtypeFieldInfo
instance AttrInfo CommitSizesEntryObjtypeFieldInfo where
    type AttrBaseTypeConstraint CommitSizesEntryObjtypeFieldInfo = (~) CommitSizesEntry
    type AttrAllowedOps CommitSizesEntryObjtypeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint CommitSizesEntryObjtypeFieldInfo = (~) OSTree.Enums.ObjectType
    type AttrTransferTypeConstraint CommitSizesEntryObjtypeFieldInfo = (~)OSTree.Enums.ObjectType
    type AttrTransferType CommitSizesEntryObjtypeFieldInfo = OSTree.Enums.ObjectType
    type AttrGetType CommitSizesEntryObjtypeFieldInfo = OSTree.Enums.ObjectType
    type AttrLabel CommitSizesEntryObjtypeFieldInfo = "objtype"
    type AttrOrigin CommitSizesEntryObjtypeFieldInfo = CommitSizesEntry
    attrGet = getCommitSizesEntryObjtype
    attrSet = setCommitSizesEntryObjtype
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

commitSizesEntry_objtype :: AttrLabelProxy "objtype"
commitSizesEntry_objtype = AttrLabelProxy

#endif


-- | Get the value of the “@unpacked@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' commitSizesEntry #unpacked
-- @
getCommitSizesEntryUnpacked :: MonadIO m => CommitSizesEntry -> m Word64
getCommitSizesEntryUnpacked s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO Word64
    return val

-- | Set the value of the “@unpacked@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' commitSizesEntry [ #unpacked 'Data.GI.Base.Attributes.:=' value ]
-- @
setCommitSizesEntryUnpacked :: MonadIO m => CommitSizesEntry -> Word64 -> m ()
setCommitSizesEntryUnpacked s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (val :: Word64)

#if defined(ENABLE_OVERLOADING)
data CommitSizesEntryUnpackedFieldInfo
instance AttrInfo CommitSizesEntryUnpackedFieldInfo where
    type AttrBaseTypeConstraint CommitSizesEntryUnpackedFieldInfo = (~) CommitSizesEntry
    type AttrAllowedOps CommitSizesEntryUnpackedFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint CommitSizesEntryUnpackedFieldInfo = (~) Word64
    type AttrTransferTypeConstraint CommitSizesEntryUnpackedFieldInfo = (~)Word64
    type AttrTransferType CommitSizesEntryUnpackedFieldInfo = Word64
    type AttrGetType CommitSizesEntryUnpackedFieldInfo = Word64
    type AttrLabel CommitSizesEntryUnpackedFieldInfo = "unpacked"
    type AttrOrigin CommitSizesEntryUnpackedFieldInfo = CommitSizesEntry
    attrGet = getCommitSizesEntryUnpacked
    attrSet = setCommitSizesEntryUnpacked
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

commitSizesEntry_unpacked :: AttrLabelProxy "unpacked"
commitSizesEntry_unpacked = AttrLabelProxy

#endif


-- | Get the value of the “@archived@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' commitSizesEntry #archived
-- @
getCommitSizesEntryArchived :: MonadIO m => CommitSizesEntry -> m Word64
getCommitSizesEntryArchived s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Word64
    return val

-- | Set the value of the “@archived@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' commitSizesEntry [ #archived 'Data.GI.Base.Attributes.:=' value ]
-- @
setCommitSizesEntryArchived :: MonadIO m => CommitSizesEntry -> Word64 -> m ()
setCommitSizesEntryArchived s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: Word64)

#if defined(ENABLE_OVERLOADING)
data CommitSizesEntryArchivedFieldInfo
instance AttrInfo CommitSizesEntryArchivedFieldInfo where
    type AttrBaseTypeConstraint CommitSizesEntryArchivedFieldInfo = (~) CommitSizesEntry
    type AttrAllowedOps CommitSizesEntryArchivedFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint CommitSizesEntryArchivedFieldInfo = (~) Word64
    type AttrTransferTypeConstraint CommitSizesEntryArchivedFieldInfo = (~)Word64
    type AttrTransferType CommitSizesEntryArchivedFieldInfo = Word64
    type AttrGetType CommitSizesEntryArchivedFieldInfo = Word64
    type AttrLabel CommitSizesEntryArchivedFieldInfo = "archived"
    type AttrOrigin CommitSizesEntryArchivedFieldInfo = CommitSizesEntry
    attrGet = getCommitSizesEntryArchived
    attrSet = setCommitSizesEntryArchived
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

commitSizesEntry_archived :: AttrLabelProxy "archived"
commitSizesEntry_archived = AttrLabelProxy

#endif



#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList CommitSizesEntry
type instance O.AttributeList CommitSizesEntry = CommitSizesEntryAttributeList
type CommitSizesEntryAttributeList = ('[ '("checksum", CommitSizesEntryChecksumFieldInfo), '("objtype", CommitSizesEntryObjtypeFieldInfo), '("unpacked", CommitSizesEntryUnpackedFieldInfo), '("archived", CommitSizesEntryArchivedFieldInfo)] :: [(Symbol, *)])
#endif

-- method CommitSizesEntry::new
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "checksum"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "object checksum" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "objtype"
--           , argType =
--               TInterface Name { namespace = "OSTree" , name = "ObjectType" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "object type" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "unpacked"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "unpacked object size"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "archived"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "compressed object size"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "OSTree" , name = "CommitSizesEntry" })
-- throws : False
-- Skip return : False

foreign import ccall "ostree_commit_sizes_entry_new" ostree_commit_sizes_entry_new ::
    CString ->                              -- checksum : TBasicType TUTF8
    CUInt ->                                -- objtype : TInterface (Name {namespace = "OSTree", name = "ObjectType"})
    Word64 ->                               -- unpacked : TBasicType TUInt64
    Word64 ->                               -- archived : TBasicType TUInt64
    IO (Ptr CommitSizesEntry)

-- | Create a new t'GI.OSTree.Structs.CommitSizesEntry.CommitSizesEntry' for representing an object in a
-- commit\'s \"ostree.sizes\" metadata.
-- 
-- /Since: 2020.1/
commitSizesEntryNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    -- ^ /@checksum@/: object checksum
    -> OSTree.Enums.ObjectType
    -- ^ /@objtype@/: object type
    -> Word64
    -- ^ /@unpacked@/: unpacked object size
    -> Word64
    -- ^ /@archived@/: compressed object size
    -> m (Maybe CommitSizesEntry)
    -- ^ __Returns:__ a new t'GI.OSTree.Structs.CommitSizesEntry.CommitSizesEntry'
commitSizesEntryNew checksum objtype unpacked archived = liftIO $ do
    checksum' <- textToCString checksum
    let objtype' = (fromIntegral . fromEnum) objtype
    result <- ostree_commit_sizes_entry_new checksum' objtype' unpacked archived
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- (wrapBoxed CommitSizesEntry) result'
        return result''
    freeMem checksum'
    return maybeResult

#if defined(ENABLE_OVERLOADING)
#endif

-- method CommitSizesEntry::copy
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "entry"
--           , argType =
--               TInterface
--                 Name { namespace = "OSTree" , name = "CommitSizesEntry" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "an #OstreeCommitSizesEntry"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "OSTree" , name = "CommitSizesEntry" })
-- throws : False
-- Skip return : False

foreign import ccall "ostree_commit_sizes_entry_copy" ostree_commit_sizes_entry_copy ::
    Ptr CommitSizesEntry ->                 -- entry : TInterface (Name {namespace = "OSTree", name = "CommitSizesEntry"})
    IO (Ptr CommitSizesEntry)

-- | Create a copy of the given /@entry@/.
-- 
-- /Since: 2020.1/
commitSizesEntryCopy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    CommitSizesEntry
    -- ^ /@entry@/: an t'GI.OSTree.Structs.CommitSizesEntry.CommitSizesEntry'
    -> m (Maybe CommitSizesEntry)
    -- ^ __Returns:__ a new copy of /@entry@/
commitSizesEntryCopy entry = liftIO $ do
    entry' <- unsafeManagedPtrGetPtr entry
    result <- ostree_commit_sizes_entry_copy entry'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- (wrapBoxed CommitSizesEntry) result'
        return result''
    touchManagedPtr entry
    return maybeResult

#if defined(ENABLE_OVERLOADING)
data CommitSizesEntryCopyMethodInfo
instance (signature ~ (m (Maybe CommitSizesEntry)), MonadIO m) => O.MethodInfo CommitSizesEntryCopyMethodInfo CommitSizesEntry signature where
    overloadedMethod = commitSizesEntryCopy

#endif

-- method CommitSizesEntry::free
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "entry"
--           , argType =
--               TInterface
--                 Name { namespace = "OSTree" , name = "CommitSizesEntry" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "an #OstreeCommitSizesEntry"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "ostree_commit_sizes_entry_free" ostree_commit_sizes_entry_free ::
    Ptr CommitSizesEntry ->                 -- entry : TInterface (Name {namespace = "OSTree", name = "CommitSizesEntry"})
    IO ()

-- | Free given /@entry@/.
-- 
-- /Since: 2020.1/
commitSizesEntryFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    CommitSizesEntry
    -- ^ /@entry@/: an t'GI.OSTree.Structs.CommitSizesEntry.CommitSizesEntry'
    -> m ()
commitSizesEntryFree entry = liftIO $ do
    entry' <- B.ManagedPtr.disownBoxed entry
    ostree_commit_sizes_entry_free entry'
    touchManagedPtr entry
    return ()

#if defined(ENABLE_OVERLOADING)
data CommitSizesEntryFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo CommitSizesEntryFreeMethodInfo CommitSizesEntry signature where
    overloadedMethod = commitSizesEntryFree

#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveCommitSizesEntryMethod (t :: Symbol) (o :: *) :: * where
    ResolveCommitSizesEntryMethod "copy" o = CommitSizesEntryCopyMethodInfo
    ResolveCommitSizesEntryMethod "free" o = CommitSizesEntryFreeMethodInfo
    ResolveCommitSizesEntryMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveCommitSizesEntryMethod t CommitSizesEntry, O.MethodInfo info CommitSizesEntry p) => OL.IsLabel t (CommitSizesEntry -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#endif