{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- /No description available in the introspection data./

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

module GI.Wp.Structs.SpaPodBuilder
    ( 

-- * Exported types
    SpaPodBuilder(..)                       ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [addBoolean]("GI.Wp.Structs.SpaPodBuilder#g:method:addBoolean"), [addBytes]("GI.Wp.Structs.SpaPodBuilder#g:method:addBytes"), [addControl]("GI.Wp.Structs.SpaPodBuilder#g:method:addControl"), [addDouble]("GI.Wp.Structs.SpaPodBuilder#g:method:addDouble"), [addFd]("GI.Wp.Structs.SpaPodBuilder#g:method:addFd"), [addFloat]("GI.Wp.Structs.SpaPodBuilder#g:method:addFloat"), [addFraction]("GI.Wp.Structs.SpaPodBuilder#g:method:addFraction"), [addId]("GI.Wp.Structs.SpaPodBuilder#g:method:addId"), [addInt]("GI.Wp.Structs.SpaPodBuilder#g:method:addInt"), [addLong]("GI.Wp.Structs.SpaPodBuilder#g:method:addLong"), [addNone]("GI.Wp.Structs.SpaPodBuilder#g:method:addNone"), [addPod]("GI.Wp.Structs.SpaPodBuilder#g:method:addPod"), [addPointer]("GI.Wp.Structs.SpaPodBuilder#g:method:addPointer"), [addProperty]("GI.Wp.Structs.SpaPodBuilder#g:method:addProperty"), [addPropertyId]("GI.Wp.Structs.SpaPodBuilder#g:method:addPropertyId"), [addRectangle]("GI.Wp.Structs.SpaPodBuilder#g:method:addRectangle"), [addString]("GI.Wp.Structs.SpaPodBuilder#g:method:addString"), [end]("GI.Wp.Structs.SpaPodBuilder#g:method:end"), [ref]("GI.Wp.Structs.SpaPodBuilder#g:method:ref"), [unref]("GI.Wp.Structs.SpaPodBuilder#g:method:unref").
-- 
-- ==== Getters
-- /None/.
-- 
-- ==== Setters
-- /None/.

#if defined(ENABLE_OVERLOADING)
    ResolveSpaPodBuilderMethod              ,
#endif

-- ** addBoolean #method:addBoolean#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddBooleanMethodInfo       ,
#endif
    spaPodBuilderAddBoolean                 ,


-- ** addBytes #method:addBytes#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddBytesMethodInfo         ,
#endif
    spaPodBuilderAddBytes                   ,


-- ** addControl #method:addControl#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddControlMethodInfo       ,
#endif
    spaPodBuilderAddControl                 ,


-- ** addDouble #method:addDouble#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddDoubleMethodInfo        ,
#endif
    spaPodBuilderAddDouble                  ,


-- ** addFd #method:addFd#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddFdMethodInfo            ,
#endif
    spaPodBuilderAddFd                      ,


-- ** addFloat #method:addFloat#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddFloatMethodInfo         ,
#endif
    spaPodBuilderAddFloat                   ,


-- ** addFraction #method:addFraction#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddFractionMethodInfo      ,
#endif
    spaPodBuilderAddFraction                ,


-- ** addId #method:addId#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddIdMethodInfo            ,
#endif
    spaPodBuilderAddId                      ,


-- ** addInt #method:addInt#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddIntMethodInfo           ,
#endif
    spaPodBuilderAddInt                     ,


-- ** addLong #method:addLong#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddLongMethodInfo          ,
#endif
    spaPodBuilderAddLong                    ,


-- ** addNone #method:addNone#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddNoneMethodInfo          ,
#endif
    spaPodBuilderAddNone                    ,


-- ** addPod #method:addPod#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddPodMethodInfo           ,
#endif
    spaPodBuilderAddPod                     ,


-- ** addPointer #method:addPointer#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddPointerMethodInfo       ,
#endif
    spaPodBuilderAddPointer                 ,


-- ** addProperty #method:addProperty#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddPropertyMethodInfo      ,
#endif
    spaPodBuilderAddProperty                ,


-- ** addPropertyId #method:addPropertyId#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddPropertyIdMethodInfo    ,
#endif
    spaPodBuilderAddPropertyId              ,


-- ** addRectangle #method:addRectangle#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddRectangleMethodInfo     ,
#endif
    spaPodBuilderAddRectangle               ,


-- ** addString #method:addString#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderAddStringMethodInfo        ,
#endif
    spaPodBuilderAddString                  ,


-- ** end #method:end#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderEndMethodInfo              ,
#endif
    spaPodBuilderEnd                        ,


-- ** newArray #method:newArray#

    spaPodBuilderNewArray                   ,


-- ** newChoice #method:newChoice#

    spaPodBuilderNewChoice                  ,


-- ** newObject #method:newObject#

    spaPodBuilderNewObject                  ,


-- ** newSequence #method:newSequence#

    spaPodBuilderNewSequence                ,


-- ** newStruct #method:newStruct#

    spaPodBuilderNewStruct                  ,


-- ** ref #method:ref#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderRefMethodInfo              ,
#endif
    spaPodBuilderRef                        ,


-- ** unref #method:unref#

#if defined(ENABLE_OVERLOADING)
    SpaPodBuilderUnrefMethodInfo            ,
#endif
    spaPodBuilderUnref                      ,




    ) 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 Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT

-- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/23392
#if MIN_VERSION_base(4,18,0)
import qualified GI.Wp.Callbacks as Wp.Callbacks
import {-# SOURCE #-} qualified GI.Wp.Objects.SpaType as Wp.SpaType
import {-# SOURCE #-} qualified GI.Wp.Structs.Iterator as Wp.Iterator
import {-# SOURCE #-} qualified GI.Wp.Structs.IteratorMethods as Wp.IteratorMethods
import {-# SOURCE #-} qualified GI.Wp.Structs.SpaPod as Wp.SpaPod

#else
import {-# SOURCE #-} qualified GI.Wp.Structs.SpaPod as Wp.SpaPod

#endif

-- | Memory-managed wrapper type.
newtype SpaPodBuilder = SpaPodBuilder (SP.ManagedPtr SpaPodBuilder)
    deriving (Eq)

instance SP.ManagedPtrNewtype SpaPodBuilder where
    toManagedPtr (SpaPodBuilder p) = p

foreign import ccall "wp_spa_pod_builder_get_type" c_wp_spa_pod_builder_get_type :: 
    IO GType

type instance O.ParentTypes SpaPodBuilder = '[]
instance O.HasParentTypes SpaPodBuilder

instance B.Types.TypedObject SpaPodBuilder where
    glibType = c_wp_spa_pod_builder_get_type

instance B.Types.GBoxed SpaPodBuilder

-- | Convert t'SpaPodBuilder' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe SpaPodBuilder) where
    gvalueGType_ = c_wp_spa_pod_builder_get_type
    gvalueSet_ gv P.Nothing = B.GValue.set_boxed gv (FP.nullPtr :: FP.Ptr SpaPodBuilder)
    gvalueSet_ gv (P.Just obj) = B.ManagedPtr.withManagedPtr obj (B.GValue.set_boxed gv)
    gvalueGet_ gv = do
        ptr <- B.GValue.get_boxed gv :: IO (Ptr SpaPodBuilder)
        if ptr /= FP.nullPtr
        then P.Just <$> B.ManagedPtr.newBoxed SpaPodBuilder ptr
        else return P.Nothing
        
    


#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList SpaPodBuilder
type instance O.AttributeList SpaPodBuilder = SpaPodBuilderAttributeList
type SpaPodBuilderAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif

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

foreign import ccall "wp_spa_pod_builder_new_array" wp_spa_pod_builder_new_array :: 
    IO (Ptr SpaPodBuilder)

-- | Creates a spa pod builder of type array.
spaPodBuilderNewArray ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m SpaPodBuilder
    -- ^ __Returns:__ the new spa pod builder
spaPodBuilderNewArray  = liftIO $ do
    result <- wp_spa_pod_builder_new_array
    checkUnexpectedReturnNULL "spaPodBuilderNewArray" result
    result' <- (wrapBoxed SpaPodBuilder) result
    return result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method SpaPodBuilder::new_choice
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "choice_type"
--           , argType = TBasicType TUTF8
--           , argCType = Just "const char*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "the name of the choice type (\"Range\", \"Step\", ...)"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" })
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_new_choice" wp_spa_pod_builder_new_choice :: 
    CString ->                              -- choice_type : TBasicType TUTF8
    IO (Ptr SpaPodBuilder)

-- | Creates a spa pod builder of type choice.
spaPodBuilderNewChoice ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    -- ^ /@choiceType@/: the name of the choice type (\"Range\", \"Step\", ...)
    -> m SpaPodBuilder
    -- ^ __Returns:__ the new spa pod builder
spaPodBuilderNewChoice choiceType = liftIO $ do
    choiceType' <- textToCString choiceType
    result <- wp_spa_pod_builder_new_choice choiceType'
    checkUnexpectedReturnNULL "spaPodBuilderNewChoice" result
    result' <- (wrapBoxed SpaPodBuilder) result
    freeMem choiceType'
    return result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method SpaPodBuilder::new_object
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "type_name"
--           , argType = TBasicType TUTF8
--           , argCType = Just "const char*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type name of the object type"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "id_name"
--           , argType = TBasicType TUTF8
--           , argCType = Just "const char*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the Id name of the object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" })
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_new_object" wp_spa_pod_builder_new_object :: 
    CString ->                              -- type_name : TBasicType TUTF8
    CString ->                              -- id_name : TBasicType TUTF8
    IO (Ptr SpaPodBuilder)

-- | Creates a spa pod builder of type object.
spaPodBuilderNewObject ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    -- ^ /@typeName@/: the type name of the object type
    -> T.Text
    -- ^ /@idName@/: the Id name of the object
    -> m SpaPodBuilder
    -- ^ __Returns:__ the new spa pod builder
spaPodBuilderNewObject typeName idName = liftIO $ do
    typeName' <- textToCString typeName
    idName' <- textToCString idName
    result <- wp_spa_pod_builder_new_object typeName' idName'
    checkUnexpectedReturnNULL "spaPodBuilderNewObject" result
    result' <- (wrapBoxed SpaPodBuilder) result
    freeMem typeName'
    freeMem idName'
    return result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method SpaPodBuilder::new_sequence
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "unit"
--           , argType = TBasicType TUInt
--           , argCType = Just "guint"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" })
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_new_sequence" wp_spa_pod_builder_new_sequence :: 
    Word32 ->                               -- unit : TBasicType TUInt
    IO (Ptr SpaPodBuilder)

-- | Creates a spa pod builder of type sequence.
spaPodBuilderNewSequence ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Word32
    -> m SpaPodBuilder
    -- ^ __Returns:__ the new spa pod builder
spaPodBuilderNewSequence unit = liftIO $ do
    result <- wp_spa_pod_builder_new_sequence unit
    checkUnexpectedReturnNULL "spaPodBuilderNewSequence" result
    result' <- (wrapBoxed SpaPodBuilder) result
    return result'

#if defined(ENABLE_OVERLOADING)
#endif

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

foreign import ccall "wp_spa_pod_builder_new_struct" wp_spa_pod_builder_new_struct :: 
    IO (Ptr SpaPodBuilder)

-- | Creates a spa pod builder of type struct.
spaPodBuilderNewStruct ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m SpaPodBuilder
    -- ^ __Returns:__ the new spa pod builder
spaPodBuilderNewStruct  = liftIO $ do
    result <- wp_spa_pod_builder_new_struct
    checkUnexpectedReturnNULL "spaPodBuilderNewStruct" result
    result' <- (wrapBoxed SpaPodBuilder) result
    return result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method SpaPodBuilder::add_boolean
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TBoolean
--           , argCType = Just "gboolean"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the boolean value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_boolean" wp_spa_pod_builder_add_boolean :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    CInt ->                                 -- value : TBasicType TBoolean
    IO ()

-- | Adds a boolean value into the builder.
spaPodBuilderAddBoolean ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Bool
    -- ^ /@value@/: the boolean value
    -> m ()
spaPodBuilderAddBoolean self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    let value' = (P.fromIntegral . P.fromEnum) value
    wp_spa_pod_builder_add_boolean self' value'
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddBooleanMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddBooleanMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddBoolean

instance O.OverloadedMethodInfo SpaPodBuilderAddBooleanMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddBoolean",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddBoolean"
        })


#endif

-- method SpaPodBuilder::add_bytes
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TPtr
--           , argCType = Just "gconstpointer"
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the bytes value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "len"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the length of the bytes value"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_bytes" wp_spa_pod_builder_add_bytes :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Ptr () ->                               -- value : TBasicType TPtr
    Word32 ->                               -- len : TBasicType TUInt32
    IO ()

-- | Adds a bytes value with its length into the builder.
spaPodBuilderAddBytes ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Ptr ()
    -- ^ /@value@/: the bytes value
    -> Word32
    -- ^ /@len@/: the length of the bytes value
    -> m ()
spaPodBuilderAddBytes self value len = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_bytes self' value len
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddBytesMethodInfo
instance (signature ~ (Ptr () -> Word32 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddBytesMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddBytes

instance O.OverloadedMethodInfo SpaPodBuilderAddBytesMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddBytes",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddBytes"
        })


#endif

-- method SpaPodBuilder::add_control
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "offset"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the offset of the control"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "ctl_type"
--           , argType = TBasicType TUTF8
--           , argCType = Just "const char*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type name of the control"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_control" wp_spa_pod_builder_add_control :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Word32 ->                               -- offset : TBasicType TUInt32
    CString ->                              -- ctl_type : TBasicType TUTF8
    IO ()

-- | Adds a control into the builder.
spaPodBuilderAddControl ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Word32
    -- ^ /@offset@/: the offset of the control
    -> T.Text
    -- ^ /@ctlType@/: the type name of the control
    -> m ()
spaPodBuilderAddControl self offset ctlType = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    ctlType' <- textToCString ctlType
    wp_spa_pod_builder_add_control self' offset ctlType'
    touchManagedPtr self
    freeMem ctlType'
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddControlMethodInfo
instance (signature ~ (Word32 -> T.Text -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddControlMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddControl

instance O.OverloadedMethodInfo SpaPodBuilderAddControlMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddControl",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddControl"
        })


#endif

-- method SpaPodBuilder::add_double
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TDouble
--           , argCType = Just "double"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the double value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_double" wp_spa_pod_builder_add_double :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    CDouble ->                              -- value : TBasicType TDouble
    IO ()

-- | Adds a double value into the builder.
spaPodBuilderAddDouble ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Double
    -- ^ /@value@/: the double value
    -> m ()
spaPodBuilderAddDouble self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    let value' = realToFrac value
    wp_spa_pod_builder_add_double self' value'
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddDoubleMethodInfo
instance (signature ~ (Double -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddDoubleMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddDouble

instance O.OverloadedMethodInfo SpaPodBuilderAddDoubleMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddDouble",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddDouble"
        })


#endif

-- method SpaPodBuilder::add_fd
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TInt64
--           , argCType = Just "gint64"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the Fd value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_fd" wp_spa_pod_builder_add_fd :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Int64 ->                                -- value : TBasicType TInt64
    IO ()

-- | Adds a Fd value into the builder.
spaPodBuilderAddFd ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Int64
    -- ^ /@value@/: the Fd value
    -> m ()
spaPodBuilderAddFd self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_fd self' value
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddFdMethodInfo
instance (signature ~ (Int64 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddFdMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddFd

instance O.OverloadedMethodInfo SpaPodBuilderAddFdMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddFd",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddFd"
        })


#endif

-- method SpaPodBuilder::add_float
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TFloat
--           , argCType = Just "float"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the float value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_float" wp_spa_pod_builder_add_float :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    CFloat ->                               -- value : TBasicType TFloat
    IO ()

-- | Adds a float value into the builder.
spaPodBuilderAddFloat ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Float
    -- ^ /@value@/: the float value
    -> m ()
spaPodBuilderAddFloat self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    let value' = realToFrac value
    wp_spa_pod_builder_add_float self' value'
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddFloatMethodInfo
instance (signature ~ (Float -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddFloatMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddFloat

instance O.OverloadedMethodInfo SpaPodBuilderAddFloatMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddFloat",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddFloat"
        })


#endif

-- method SpaPodBuilder::add_fraction
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "num"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the numerator value of the fraction"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "denom"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the denominator value of the fraction"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_fraction" wp_spa_pod_builder_add_fraction :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Word32 ->                               -- num : TBasicType TUInt32
    Word32 ->                               -- denom : TBasicType TUInt32
    IO ()

-- | Adds the numerator and denominator values of a fraction into the builder.
spaPodBuilderAddFraction ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Word32
    -- ^ /@num@/: the numerator value of the fraction
    -> Word32
    -- ^ /@denom@/: the denominator value of the fraction
    -> m ()
spaPodBuilderAddFraction self num denom = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_fraction self' num denom
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddFractionMethodInfo
instance (signature ~ (Word32 -> Word32 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddFractionMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddFraction

instance O.OverloadedMethodInfo SpaPodBuilderAddFractionMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddFraction",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddFraction"
        })


#endif

-- method SpaPodBuilder::add_id
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the Id value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_id" wp_spa_pod_builder_add_id :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Word32 ->                               -- value : TBasicType TUInt32
    IO ()

-- | Adds a Id value into the builder.
spaPodBuilderAddId ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Word32
    -- ^ /@value@/: the Id value
    -> m ()
spaPodBuilderAddId self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_id self' value
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddIdMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddIdMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddId

instance O.OverloadedMethodInfo SpaPodBuilderAddIdMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddId",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddId"
        })


#endif

-- method SpaPodBuilder::add_int
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TInt32
--           , argCType = Just "gint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the int value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_int" wp_spa_pod_builder_add_int :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Int32 ->                                -- value : TBasicType TInt32
    IO ()

-- | Adds a int value into the builder.
spaPodBuilderAddInt ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Int32
    -- ^ /@value@/: the int value
    -> m ()
spaPodBuilderAddInt self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_int self' value
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddIntMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddIntMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddInt

instance O.OverloadedMethodInfo SpaPodBuilderAddIntMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddInt",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddInt"
        })


#endif

-- method SpaPodBuilder::add_long
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TInt64
--           , argCType = Just "gint64"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the long value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_long" wp_spa_pod_builder_add_long :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Int64 ->                                -- value : TBasicType TInt64
    IO ()

-- | Adds a long value into the builder.
spaPodBuilderAddLong ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Int64
    -- ^ /@value@/: the long value
    -> m ()
spaPodBuilderAddLong self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_long self' value
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddLongMethodInfo
instance (signature ~ (Int64 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddLongMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddLong

instance O.OverloadedMethodInfo SpaPodBuilderAddLongMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddLong",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddLong"
        })


#endif

-- method SpaPodBuilder::add_none
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_none" wp_spa_pod_builder_add_none :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    IO ()

-- | Adds a none value into the builder.
spaPodBuilderAddNone ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> m ()
spaPodBuilderAddNone self = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_none self'
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddNoneMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddNoneMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddNone

instance O.OverloadedMethodInfo SpaPodBuilderAddNoneMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddNone",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddNone"
        })


#endif

-- method SpaPodBuilder::add_pod
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "pod"
--           , argType = TInterface Name { namespace = "Wp" , name = "SpaPod" }
--           , argCType = Just "WpSpaPod*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the pod value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_pod" wp_spa_pod_builder_add_pod :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Ptr Wp.SpaPod.SpaPod ->                 -- pod : TInterface (Name {namespace = "Wp", name = "SpaPod"})
    IO ()

-- | Adds a pod value into the builder.
spaPodBuilderAddPod ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Wp.SpaPod.SpaPod
    -- ^ /@pod@/: the pod value
    -> m ()
spaPodBuilderAddPod self pod = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    pod' <- unsafeManagedPtrGetPtr pod
    wp_spa_pod_builder_add_pod self' pod'
    touchManagedPtr self
    touchManagedPtr pod
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddPodMethodInfo
instance (signature ~ (Wp.SpaPod.SpaPod -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddPodMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddPod

instance O.OverloadedMethodInfo SpaPodBuilderAddPodMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddPod",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddPod"
        })


#endif

-- method SpaPodBuilder::add_pointer
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "type_name"
--           , argType = TBasicType TUTF8
--           , argCType = Just "const char*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type name that the pointer points to"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TPtr
--           , argCType = Just "gconstpointer"
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the pointer value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_pointer" wp_spa_pod_builder_add_pointer :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    CString ->                              -- type_name : TBasicType TUTF8
    Ptr () ->                               -- value : TBasicType TPtr
    IO ()

-- | Adds a pointer value with its type name into the builder.
spaPodBuilderAddPointer ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> T.Text
    -- ^ /@typeName@/: the type name that the pointer points to
    -> Ptr ()
    -- ^ /@value@/: the pointer value
    -> m ()
spaPodBuilderAddPointer self typeName value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    typeName' <- textToCString typeName
    wp_spa_pod_builder_add_pointer self' typeName' value
    touchManagedPtr self
    freeMem typeName'
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddPointerMethodInfo
instance (signature ~ (T.Text -> Ptr () -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddPointerMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddPointer

instance O.OverloadedMethodInfo SpaPodBuilderAddPointerMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddPointer",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddPointer"
        })


#endif

-- method SpaPodBuilder::add_property
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "key"
--           , argType = TBasicType TUTF8
--           , argCType = Just "const char*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the name of the property"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_property" wp_spa_pod_builder_add_property :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    CString ->                              -- key : TBasicType TUTF8
    IO ()

-- | Adds a property into the builder.
spaPodBuilderAddProperty ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> T.Text
    -- ^ /@key@/: the name of the property
    -> m ()
spaPodBuilderAddProperty self key = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    key' <- textToCString key
    wp_spa_pod_builder_add_property self' key'
    touchManagedPtr self
    freeMem key'
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddPropertyMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddPropertyMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddProperty

instance O.OverloadedMethodInfo SpaPodBuilderAddPropertyMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddProperty",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddProperty"
        })


#endif

-- method SpaPodBuilder::add_property_id
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "id"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the id of the property"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_property_id" wp_spa_pod_builder_add_property_id :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Word32 ->                               -- id : TBasicType TUInt32
    IO ()

-- | Adds a property into the builder.
spaPodBuilderAddPropertyId ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Word32
    -- ^ /@id@/: the id of the property
    -> m ()
spaPodBuilderAddPropertyId self id = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_property_id self' id
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddPropertyIdMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddPropertyIdMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddPropertyId

instance O.OverloadedMethodInfo SpaPodBuilderAddPropertyIdMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddPropertyId",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddPropertyId"
        })


#endif

-- method SpaPodBuilder::add_rectangle
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "width"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the width value of the rectangle"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "height"
--           , argType = TBasicType TUInt32
--           , argCType = Just "guint32"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the height value of the rectangle"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_rectangle" wp_spa_pod_builder_add_rectangle :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    Word32 ->                               -- width : TBasicType TUInt32
    Word32 ->                               -- height : TBasicType TUInt32
    IO ()

-- | Adds the width and height values of a rectangle into the builder.
spaPodBuilderAddRectangle ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> Word32
    -- ^ /@width@/: the width value of the rectangle
    -> Word32
    -- ^ /@height@/: the height value of the rectangle
    -> m ()
spaPodBuilderAddRectangle self width height = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    wp_spa_pod_builder_add_rectangle self' width height
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddRectangleMethodInfo
instance (signature ~ (Word32 -> Word32 -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddRectangleMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddRectangle

instance O.OverloadedMethodInfo SpaPodBuilderAddRectangleMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddRectangle",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddRectangle"
        })


#endif

-- method SpaPodBuilder::add_string
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TUTF8
--           , argCType = Just "const char*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the string value" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_add_string" wp_spa_pod_builder_add_string :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    CString ->                              -- value : TBasicType TUTF8
    IO ()

-- | Adds a string value into the builder.
spaPodBuilderAddString ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> T.Text
    -- ^ /@value@/: the string value
    -> m ()
spaPodBuilderAddString self value = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    value' <- textToCString value
    wp_spa_pod_builder_add_string self' value'
    touchManagedPtr self
    freeMem value'
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderAddStringMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderAddStringMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderAddString

instance O.OverloadedMethodInfo SpaPodBuilderAddStringMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderAddString",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderAddString"
        })


#endif

-- method SpaPodBuilder::end
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Wp" , name = "SpaPod" })
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_end" wp_spa_pod_builder_end :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    IO (Ptr Wp.SpaPod.SpaPod)

-- | Ends the builder process and returns the constructed spa pod object.
spaPodBuilderEnd ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: the spa pod builder object
    -> m Wp.SpaPod.SpaPod
    -- ^ __Returns:__ the constructed spa pod object
spaPodBuilderEnd self = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    result <- wp_spa_pod_builder_end self'
    checkUnexpectedReturnNULL "spaPodBuilderEnd" result
    result' <- (wrapBoxed Wp.SpaPod.SpaPod) result
    touchManagedPtr self
    return result'

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderEndMethodInfo
instance (signature ~ (m Wp.SpaPod.SpaPod), MonadIO m) => O.OverloadedMethod SpaPodBuilderEndMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderEnd

instance O.OverloadedMethodInfo SpaPodBuilderEndMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderEnd",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderEnd"
        })


#endif

-- method SpaPodBuilder::ref
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" })
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_ref" wp_spa_pod_builder_ref :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    IO (Ptr SpaPodBuilder)

-- | Increases the reference count of a spa pod builder.
spaPodBuilderRef ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: a spa pod builder object
    -> m SpaPodBuilder
    -- ^ __Returns:__ /@self@/ with an additional reference count on it
spaPodBuilderRef self = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    result <- wp_spa_pod_builder_ref self'
    checkUnexpectedReturnNULL "spaPodBuilderRef" result
    result' <- (wrapBoxed SpaPodBuilder) result
    touchManagedPtr self
    return result'

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderRefMethodInfo
instance (signature ~ (m SpaPodBuilder), MonadIO m) => O.OverloadedMethod SpaPodBuilderRefMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderRef

instance O.OverloadedMethodInfo SpaPodBuilderRefMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderRef",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderRef"
        })


#endif

-- method SpaPodBuilder::unref
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "self"
--           , argType =
--               TInterface Name { namespace = "Wp" , name = "SpaPodBuilder" }
--           , argCType = Just "WpSpaPodBuilder*"
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a spa pod builder object"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "wp_spa_pod_builder_unref" wp_spa_pod_builder_unref :: 
    Ptr SpaPodBuilder ->                    -- self : TInterface (Name {namespace = "Wp", name = "SpaPodBuilder"})
    IO ()

-- | Decreases the reference count on /@self@/ and frees it when the ref count reaches zero.
spaPodBuilderUnref ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SpaPodBuilder
    -- ^ /@self@/: a spa pod builder object
    -> m ()
spaPodBuilderUnref self = liftIO $ do
    self' <- B.ManagedPtr.disownBoxed self
    wp_spa_pod_builder_unref self'
    touchManagedPtr self
    return ()

#if defined(ENABLE_OVERLOADING)
data SpaPodBuilderUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod SpaPodBuilderUnrefMethodInfo SpaPodBuilder signature where
    overloadedMethod = spaPodBuilderUnref

instance O.OverloadedMethodInfo SpaPodBuilderUnrefMethodInfo SpaPodBuilder where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Wp.Structs.SpaPodBuilder.spaPodBuilderUnref",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-wireplumber-0.5.14.2/docs/GI-Wp-Structs-SpaPodBuilder.html#v:spaPodBuilderUnref"
        })


#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveSpaPodBuilderMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveSpaPodBuilderMethod "addBoolean" o = SpaPodBuilderAddBooleanMethodInfo
    ResolveSpaPodBuilderMethod "addBytes" o = SpaPodBuilderAddBytesMethodInfo
    ResolveSpaPodBuilderMethod "addControl" o = SpaPodBuilderAddControlMethodInfo
    ResolveSpaPodBuilderMethod "addDouble" o = SpaPodBuilderAddDoubleMethodInfo
    ResolveSpaPodBuilderMethod "addFd" o = SpaPodBuilderAddFdMethodInfo
    ResolveSpaPodBuilderMethod "addFloat" o = SpaPodBuilderAddFloatMethodInfo
    ResolveSpaPodBuilderMethod "addFraction" o = SpaPodBuilderAddFractionMethodInfo
    ResolveSpaPodBuilderMethod "addId" o = SpaPodBuilderAddIdMethodInfo
    ResolveSpaPodBuilderMethod "addInt" o = SpaPodBuilderAddIntMethodInfo
    ResolveSpaPodBuilderMethod "addLong" o = SpaPodBuilderAddLongMethodInfo
    ResolveSpaPodBuilderMethod "addNone" o = SpaPodBuilderAddNoneMethodInfo
    ResolveSpaPodBuilderMethod "addPod" o = SpaPodBuilderAddPodMethodInfo
    ResolveSpaPodBuilderMethod "addPointer" o = SpaPodBuilderAddPointerMethodInfo
    ResolveSpaPodBuilderMethod "addProperty" o = SpaPodBuilderAddPropertyMethodInfo
    ResolveSpaPodBuilderMethod "addPropertyId" o = SpaPodBuilderAddPropertyIdMethodInfo
    ResolveSpaPodBuilderMethod "addRectangle" o = SpaPodBuilderAddRectangleMethodInfo
    ResolveSpaPodBuilderMethod "addString" o = SpaPodBuilderAddStringMethodInfo
    ResolveSpaPodBuilderMethod "end" o = SpaPodBuilderEndMethodInfo
    ResolveSpaPodBuilderMethod "ref" o = SpaPodBuilderRefMethodInfo
    ResolveSpaPodBuilderMethod "unref" o = SpaPodBuilderUnrefMethodInfo
    ResolveSpaPodBuilderMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveSpaPodBuilderMethod t SpaPodBuilder, O.OverloadedMethod info SpaPodBuilder p) => OL.IsLabel t (SpaPodBuilder -> 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 ~ ResolveSpaPodBuilderMethod t SpaPodBuilder, O.OverloadedMethod info SpaPodBuilder p, R.HasField t SpaPodBuilder p) => R.HasField t SpaPodBuilder p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveSpaPodBuilderMethod t SpaPodBuilder, O.OverloadedMethodInfo info SpaPodBuilder) => OL.IsLabel t (O.MethodProxy info SpaPodBuilder) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif


