{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- A t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder' struct is an opaque struct. It is meant to
-- not be kept around and only be used to create new t'GI.Gdk.Structs.ContentFormats.ContentFormats'
-- objects.

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

module GI.Gdk.Structs.ContentFormatsBuilder
    ( 

-- * Exported types
    ContentFormatsBuilder(..)               ,
    noContentFormatsBuilder                 ,


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

#if defined(ENABLE_OVERLOADING)
    ResolveContentFormatsBuilderMethod      ,
#endif


-- ** addFormats #method:addFormats#

#if defined(ENABLE_OVERLOADING)
    ContentFormatsBuilderAddFormatsMethodInfo,
#endif
    contentFormatsBuilderAddFormats         ,


-- ** addGtype #method:addGtype#

#if defined(ENABLE_OVERLOADING)
    ContentFormatsBuilderAddGtypeMethodInfo ,
#endif
    contentFormatsBuilderAddGtype           ,


-- ** addMimeType #method:addMimeType#

#if defined(ENABLE_OVERLOADING)
    ContentFormatsBuilderAddMimeTypeMethodInfo,
#endif
    contentFormatsBuilderAddMimeType        ,


-- ** new #method:new#

    contentFormatsBuilderNew                ,


-- ** ref #method:ref#

#if defined(ENABLE_OVERLOADING)
    ContentFormatsBuilderRefMethodInfo      ,
#endif
    contentFormatsBuilderRef                ,


-- ** toFormats #method:toFormats#

#if defined(ENABLE_OVERLOADING)
    ContentFormatsBuilderToFormatsMethodInfo,
#endif
    contentFormatsBuilderToFormats          ,


-- ** unref #method:unref#

#if defined(ENABLE_OVERLOADING)
    ContentFormatsBuilderUnrefMethodInfo    ,
#endif
    contentFormatsBuilderUnref              ,




    ) 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.Gdk.Structs.ContentFormats as Gdk.ContentFormats

-- | Memory-managed wrapper type.
newtype ContentFormatsBuilder = ContentFormatsBuilder (ManagedPtr ContentFormatsBuilder)
    deriving (ContentFormatsBuilder -> ContentFormatsBuilder -> Bool
(ContentFormatsBuilder -> ContentFormatsBuilder -> Bool)
-> (ContentFormatsBuilder -> ContentFormatsBuilder -> Bool)
-> Eq ContentFormatsBuilder
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ContentFormatsBuilder -> ContentFormatsBuilder -> Bool
$c/= :: ContentFormatsBuilder -> ContentFormatsBuilder -> Bool
== :: ContentFormatsBuilder -> ContentFormatsBuilder -> Bool
$c== :: ContentFormatsBuilder -> ContentFormatsBuilder -> Bool
Eq)
foreign import ccall "gdk_content_formats_builder_get_type" c_gdk_content_formats_builder_get_type :: 
    IO GType

instance BoxedObject ContentFormatsBuilder where
    boxedType :: ContentFormatsBuilder -> IO GType
boxedType _ = IO GType
c_gdk_content_formats_builder_get_type

-- | Convert 'ContentFormatsBuilder' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue ContentFormatsBuilder where
    toGValue :: ContentFormatsBuilder -> IO GValue
toGValue o :: ContentFormatsBuilder
o = do
        GType
gtype <- IO GType
c_gdk_content_formats_builder_get_type
        ContentFormatsBuilder
-> (Ptr ContentFormatsBuilder -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr ContentFormatsBuilder
o (GType
-> (GValue -> Ptr ContentFormatsBuilder -> IO ())
-> Ptr ContentFormatsBuilder
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr ContentFormatsBuilder -> IO ()
forall a. GValue -> Ptr a -> IO ()
B.GValue.set_boxed)
        
    fromGValue :: GValue -> IO ContentFormatsBuilder
fromGValue gv :: GValue
gv = do
        Ptr ContentFormatsBuilder
ptr <- GValue -> IO (Ptr ContentFormatsBuilder)
forall b. GValue -> IO (Ptr b)
B.GValue.get_boxed GValue
gv :: IO (Ptr ContentFormatsBuilder)
        (ManagedPtr ContentFormatsBuilder -> ContentFormatsBuilder)
-> Ptr ContentFormatsBuilder -> IO ContentFormatsBuilder
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr ContentFormatsBuilder -> ContentFormatsBuilder
ContentFormatsBuilder Ptr ContentFormatsBuilder
ptr
        
    

-- | A convenience alias for `Nothing` :: `Maybe` `ContentFormatsBuilder`.
noContentFormatsBuilder :: Maybe ContentFormatsBuilder
noContentFormatsBuilder :: Maybe ContentFormatsBuilder
noContentFormatsBuilder = Maybe ContentFormatsBuilder
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList ContentFormatsBuilder
type instance O.AttributeList ContentFormatsBuilder = ContentFormatsBuilderAttributeList
type ContentFormatsBuilderAttributeList = ('[ ] :: [(Symbol, *)])
#endif

-- method ContentFormatsBuilder::new
-- method type : Constructor
-- Args: []
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "Gdk" , name = "ContentFormatsBuilder" })
-- throws : False
-- Skip return : False

foreign import ccall "gdk_content_formats_builder_new" gdk_content_formats_builder_new :: 
    IO (Ptr ContentFormatsBuilder)

-- | Create a new t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder' object. The resulting builder
-- would create an empty t'GI.Gdk.Structs.ContentFormats.ContentFormats'. Use addition functions to add
-- types to it.
contentFormatsBuilderNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m ContentFormatsBuilder
    -- ^ __Returns:__ a new t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder'
contentFormatsBuilderNew :: m ContentFormatsBuilder
contentFormatsBuilderNew  = IO ContentFormatsBuilder -> m ContentFormatsBuilder
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ContentFormatsBuilder -> m ContentFormatsBuilder)
-> IO ContentFormatsBuilder -> m ContentFormatsBuilder
forall a b. (a -> b) -> a -> b
$ do
    Ptr ContentFormatsBuilder
result <- IO (Ptr ContentFormatsBuilder)
gdk_content_formats_builder_new
    Text -> Ptr ContentFormatsBuilder -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "contentFormatsBuilderNew" Ptr ContentFormatsBuilder
result
    ContentFormatsBuilder
result' <- ((ManagedPtr ContentFormatsBuilder -> ContentFormatsBuilder)
-> Ptr ContentFormatsBuilder -> IO ContentFormatsBuilder
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr ContentFormatsBuilder -> ContentFormatsBuilder
ContentFormatsBuilder) Ptr ContentFormatsBuilder
result
    ContentFormatsBuilder -> IO ContentFormatsBuilder
forall (m :: * -> *) a. Monad m => a -> m a
return ContentFormatsBuilder
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method ContentFormatsBuilder::add_formats
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "builder"
--           , argType =
--               TInterface
--                 Name { namespace = "Gdk" , name = "ContentFormatsBuilder" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GdkContentFormatsBuilder"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "formats"
--           , argType =
--               TInterface Name { namespace = "Gdk" , name = "ContentFormats" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the formats to add" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gdk_content_formats_builder_add_formats" gdk_content_formats_builder_add_formats :: 
    Ptr ContentFormatsBuilder ->            -- builder : TInterface (Name {namespace = "Gdk", name = "ContentFormatsBuilder"})
    Ptr Gdk.ContentFormats.ContentFormats -> -- formats : TInterface (Name {namespace = "Gdk", name = "ContentFormats"})
    IO ()

-- | Appends all formats from /@formats@/ to /@builder@/, skipping those that
-- already exist.
contentFormatsBuilderAddFormats ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ContentFormatsBuilder
    -- ^ /@builder@/: a t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder'
    -> Gdk.ContentFormats.ContentFormats
    -- ^ /@formats@/: the formats to add
    -> m ()
contentFormatsBuilderAddFormats :: ContentFormatsBuilder -> ContentFormats -> m ()
contentFormatsBuilderAddFormats builder :: ContentFormatsBuilder
builder formats :: ContentFormats
formats = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr ContentFormatsBuilder
builder' <- ContentFormatsBuilder -> IO (Ptr ContentFormatsBuilder)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr ContentFormatsBuilder
builder
    Ptr ContentFormats
formats' <- ContentFormats -> IO (Ptr ContentFormats)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr ContentFormats
formats
    Ptr ContentFormatsBuilder -> Ptr ContentFormats -> IO ()
gdk_content_formats_builder_add_formats Ptr ContentFormatsBuilder
builder' Ptr ContentFormats
formats'
    ContentFormatsBuilder -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr ContentFormatsBuilder
builder
    ContentFormats -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr ContentFormats
formats
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data ContentFormatsBuilderAddFormatsMethodInfo
instance (signature ~ (Gdk.ContentFormats.ContentFormats -> m ()), MonadIO m) => O.MethodInfo ContentFormatsBuilderAddFormatsMethodInfo ContentFormatsBuilder signature where
    overloadedMethod = contentFormatsBuilderAddFormats

#endif

-- method ContentFormatsBuilder::add_gtype
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "builder"
--           , argType =
--               TInterface
--                 Name { namespace = "Gdk" , name = "ContentFormatsBuilder" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GdkContentFormatsBuilder"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "type"
--           , argType = TBasicType TGType
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GType" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gdk_content_formats_builder_add_gtype" gdk_content_formats_builder_add_gtype :: 
    Ptr ContentFormatsBuilder ->            -- builder : TInterface (Name {namespace = "Gdk", name = "ContentFormatsBuilder"})
    CGType ->                               -- type : TBasicType TGType
    IO ()

-- | Appends /@gtype@/ to /@builder@/ if it has not already been added.
contentFormatsBuilderAddGtype ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ContentFormatsBuilder
    -- ^ /@builder@/: a t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder'
    -> GType
    -- ^ /@type@/: a t'GType'
    -> m ()
contentFormatsBuilderAddGtype :: ContentFormatsBuilder -> GType -> m ()
contentFormatsBuilderAddGtype builder :: ContentFormatsBuilder
builder type_ :: GType
type_ = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr ContentFormatsBuilder
builder' <- ContentFormatsBuilder -> IO (Ptr ContentFormatsBuilder)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr ContentFormatsBuilder
builder
    let type_' :: CGType
type_' = GType -> CGType
gtypeToCGType GType
type_
    Ptr ContentFormatsBuilder -> CGType -> IO ()
gdk_content_formats_builder_add_gtype Ptr ContentFormatsBuilder
builder' CGType
type_'
    ContentFormatsBuilder -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr ContentFormatsBuilder
builder
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data ContentFormatsBuilderAddGtypeMethodInfo
instance (signature ~ (GType -> m ()), MonadIO m) => O.MethodInfo ContentFormatsBuilderAddGtypeMethodInfo ContentFormatsBuilder signature where
    overloadedMethod = contentFormatsBuilderAddGtype

#endif

-- method ContentFormatsBuilder::add_mime_type
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "builder"
--           , argType =
--               TInterface
--                 Name { namespace = "Gdk" , name = "ContentFormatsBuilder" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GdkContentFormatsBuilder"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "mime_type"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a mime type" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gdk_content_formats_builder_add_mime_type" gdk_content_formats_builder_add_mime_type :: 
    Ptr ContentFormatsBuilder ->            -- builder : TInterface (Name {namespace = "Gdk", name = "ContentFormatsBuilder"})
    CString ->                              -- mime_type : TBasicType TUTF8
    IO ()

-- | Appends /@mimeType@/ to /@builder@/ if it has not already been added.
contentFormatsBuilderAddMimeType ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ContentFormatsBuilder
    -- ^ /@builder@/: a t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder'
    -> T.Text
    -- ^ /@mimeType@/: a mime type
    -> m ()
contentFormatsBuilderAddMimeType :: ContentFormatsBuilder -> Text -> m ()
contentFormatsBuilderAddMimeType builder :: ContentFormatsBuilder
builder mimeType :: Text
mimeType = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr ContentFormatsBuilder
builder' <- ContentFormatsBuilder -> IO (Ptr ContentFormatsBuilder)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr ContentFormatsBuilder
builder
    CString
mimeType' <- Text -> IO CString
textToCString Text
mimeType
    Ptr ContentFormatsBuilder -> CString -> IO ()
gdk_content_formats_builder_add_mime_type Ptr ContentFormatsBuilder
builder' CString
mimeType'
    ContentFormatsBuilder -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr ContentFormatsBuilder
builder
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
mimeType'
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data ContentFormatsBuilderAddMimeTypeMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m) => O.MethodInfo ContentFormatsBuilderAddMimeTypeMethodInfo ContentFormatsBuilder signature where
    overloadedMethod = contentFormatsBuilderAddMimeType

#endif

-- method ContentFormatsBuilder::ref
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "builder"
--           , argType =
--               TInterface
--                 Name { namespace = "Gdk" , name = "ContentFormatsBuilder" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GdkContentFormatsBuilder"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "Gdk" , name = "ContentFormatsBuilder" })
-- throws : False
-- Skip return : False

foreign import ccall "gdk_content_formats_builder_ref" gdk_content_formats_builder_ref :: 
    Ptr ContentFormatsBuilder ->            -- builder : TInterface (Name {namespace = "Gdk", name = "ContentFormatsBuilder"})
    IO (Ptr ContentFormatsBuilder)

-- | Acquires a reference on the given /@builder@/.
-- 
-- This function is intended primarily for bindings. t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder' objects
-- should not be kept around.
contentFormatsBuilderRef ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ContentFormatsBuilder
    -- ^ /@builder@/: a t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder'
    -> m ContentFormatsBuilder
    -- ^ __Returns:__ the given t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder' with
    --   its reference count increased
contentFormatsBuilderRef :: ContentFormatsBuilder -> m ContentFormatsBuilder
contentFormatsBuilderRef builder :: ContentFormatsBuilder
builder = IO ContentFormatsBuilder -> m ContentFormatsBuilder
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ContentFormatsBuilder -> m ContentFormatsBuilder)
-> IO ContentFormatsBuilder -> m ContentFormatsBuilder
forall a b. (a -> b) -> a -> b
$ do
    Ptr ContentFormatsBuilder
builder' <- ContentFormatsBuilder -> IO (Ptr ContentFormatsBuilder)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr ContentFormatsBuilder
builder
    Ptr ContentFormatsBuilder
result <- Ptr ContentFormatsBuilder -> IO (Ptr ContentFormatsBuilder)
gdk_content_formats_builder_ref Ptr ContentFormatsBuilder
builder'
    Text -> Ptr ContentFormatsBuilder -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "contentFormatsBuilderRef" Ptr ContentFormatsBuilder
result
    ContentFormatsBuilder
result' <- ((ManagedPtr ContentFormatsBuilder -> ContentFormatsBuilder)
-> Ptr ContentFormatsBuilder -> IO ContentFormatsBuilder
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr ContentFormatsBuilder -> ContentFormatsBuilder
ContentFormatsBuilder) Ptr ContentFormatsBuilder
result
    ContentFormatsBuilder -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr ContentFormatsBuilder
builder
    ContentFormatsBuilder -> IO ContentFormatsBuilder
forall (m :: * -> *) a. Monad m => a -> m a
return ContentFormatsBuilder
result'

#if defined(ENABLE_OVERLOADING)
data ContentFormatsBuilderRefMethodInfo
instance (signature ~ (m ContentFormatsBuilder), MonadIO m) => O.MethodInfo ContentFormatsBuilderRefMethodInfo ContentFormatsBuilder signature where
    overloadedMethod = contentFormatsBuilderRef

#endif

-- method ContentFormatsBuilder::to_formats
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "builder"
--           , argType =
--               TInterface
--                 Name { namespace = "Gdk" , name = "ContentFormatsBuilder" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GdkContentFormatsBuilder"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Gdk" , name = "ContentFormats" })
-- throws : False
-- Skip return : False

foreign import ccall "gdk_content_formats_builder_to_formats" gdk_content_formats_builder_to_formats :: 
    Ptr ContentFormatsBuilder ->            -- builder : TInterface (Name {namespace = "Gdk", name = "ContentFormatsBuilder"})
    IO (Ptr Gdk.ContentFormats.ContentFormats)

-- | Creates a new t'GI.Gdk.Structs.ContentFormats.ContentFormats' from the given /@builder@/.
-- 
-- The given t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder' is reset once this function returns;
-- you cannot call this function multiple times on the same /@builder@/ instance.
-- 
-- This function is intended primarily for bindings. C code should use
-- @/gdk_content_formats_builder_free_to_formats()/@.
contentFormatsBuilderToFormats ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ContentFormatsBuilder
    -- ^ /@builder@/: a t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder'
    -> m Gdk.ContentFormats.ContentFormats
    -- ^ __Returns:__ the newly created t'GI.Gdk.Structs.ContentFormats.ContentFormats'
    --   with all the formats added to /@builder@/
contentFormatsBuilderToFormats :: ContentFormatsBuilder -> m ContentFormats
contentFormatsBuilderToFormats builder :: ContentFormatsBuilder
builder = IO ContentFormats -> m ContentFormats
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ContentFormats -> m ContentFormats)
-> IO ContentFormats -> m ContentFormats
forall a b. (a -> b) -> a -> b
$ do
    Ptr ContentFormatsBuilder
builder' <- ContentFormatsBuilder -> IO (Ptr ContentFormatsBuilder)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr ContentFormatsBuilder
builder
    Ptr ContentFormats
result <- Ptr ContentFormatsBuilder -> IO (Ptr ContentFormats)
gdk_content_formats_builder_to_formats Ptr ContentFormatsBuilder
builder'
    Text -> Ptr ContentFormats -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "contentFormatsBuilderToFormats" Ptr ContentFormats
result
    ContentFormats
result' <- ((ManagedPtr ContentFormats -> ContentFormats)
-> Ptr ContentFormats -> IO ContentFormats
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr ContentFormats -> ContentFormats
Gdk.ContentFormats.ContentFormats) Ptr ContentFormats
result
    ContentFormatsBuilder -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr ContentFormatsBuilder
builder
    ContentFormats -> IO ContentFormats
forall (m :: * -> *) a. Monad m => a -> m a
return ContentFormats
result'

#if defined(ENABLE_OVERLOADING)
data ContentFormatsBuilderToFormatsMethodInfo
instance (signature ~ (m Gdk.ContentFormats.ContentFormats), MonadIO m) => O.MethodInfo ContentFormatsBuilderToFormatsMethodInfo ContentFormatsBuilder signature where
    overloadedMethod = contentFormatsBuilderToFormats

#endif

-- method ContentFormatsBuilder::unref
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "builder"
--           , argType =
--               TInterface
--                 Name { namespace = "Gdk" , name = "ContentFormatsBuilder" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GdkContentFormatsBuilder"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gdk_content_formats_builder_unref" gdk_content_formats_builder_unref :: 
    Ptr ContentFormatsBuilder ->            -- builder : TInterface (Name {namespace = "Gdk", name = "ContentFormatsBuilder"})
    IO ()

-- | Releases a reference on the given /@builder@/.
contentFormatsBuilderUnref ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ContentFormatsBuilder
    -- ^ /@builder@/: a t'GI.Gdk.Structs.ContentFormatsBuilder.ContentFormatsBuilder'
    -> m ()
contentFormatsBuilderUnref :: ContentFormatsBuilder -> m ()
contentFormatsBuilderUnref builder :: ContentFormatsBuilder
builder = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr ContentFormatsBuilder
builder' <- ContentFormatsBuilder -> IO (Ptr ContentFormatsBuilder)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr ContentFormatsBuilder
builder
    Ptr ContentFormatsBuilder -> IO ()
gdk_content_formats_builder_unref Ptr ContentFormatsBuilder
builder'
    ContentFormatsBuilder -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr ContentFormatsBuilder
builder
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data ContentFormatsBuilderUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo ContentFormatsBuilderUnrefMethodInfo ContentFormatsBuilder signature where
    overloadedMethod = contentFormatsBuilderUnref

#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveContentFormatsBuilderMethod (t :: Symbol) (o :: *) :: * where
    ResolveContentFormatsBuilderMethod "addFormats" o = ContentFormatsBuilderAddFormatsMethodInfo
    ResolveContentFormatsBuilderMethod "addGtype" o = ContentFormatsBuilderAddGtypeMethodInfo
    ResolveContentFormatsBuilderMethod "addMimeType" o = ContentFormatsBuilderAddMimeTypeMethodInfo
    ResolveContentFormatsBuilderMethod "ref" o = ContentFormatsBuilderRefMethodInfo
    ResolveContentFormatsBuilderMethod "toFormats" o = ContentFormatsBuilderToFormatsMethodInfo
    ResolveContentFormatsBuilderMethod "unref" o = ContentFormatsBuilderUnrefMethodInfo
    ResolveContentFormatsBuilderMethod l o = O.MethodResolutionFailed l o

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

#endif