    {- |
    Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
    License    : LGPL-2.1
    Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

    An IPv4 or IPv6 socket address; that is, the combination of a
    'GI.Gio.Objects.InetAddress.InetAddress' and a port number.
    -}

    #define ENABLE_OVERLOADING \
           (!defined(__HADDOCK_VERSION__))

    module GI.Gio.Objects.InetSocketAddress
        (

    -- * Exported types
        InetSocketAddress(..)                   ,
        IsInetSocketAddress                     ,
        toInetSocketAddress                     ,
        noInetSocketAddress                     ,

     -- * Methods
    -- ** getAddress #method:getAddress#

    #if ENABLE_OVERLOADING
        InetSocketAddressGetAddressMethodInfo   ,
    #endif
        inetSocketAddressGetAddress             ,

    -- ** getFlowinfo #method:getFlowinfo#

    #if ENABLE_OVERLOADING
        InetSocketAddressGetFlowinfoMethodInfo  ,
    #endif
        inetSocketAddressGetFlowinfo            ,

    -- ** getPort #method:getPort#

    #if ENABLE_OVERLOADING
        InetSocketAddressGetPortMethodInfo      ,
    #endif
        inetSocketAddressGetPort                ,

    -- ** getScopeId #method:getScopeId#

    #if ENABLE_OVERLOADING
        InetSocketAddressGetScopeIdMethodInfo   ,
    #endif
        inetSocketAddressGetScopeId             ,

    -- ** new #method:new#

        inetSocketAddressNew                    ,

    -- ** newFromString #method:newFromString#

        inetSocketAddressNewFromString          ,

     -- * Properties
    -- ** address #attr:address#
    {- | /No description available in the introspection data./
    -}
    #if ENABLE_OVERLOADING
        InetSocketAddressAddressPropertyInfo    ,
    #endif
        constructInetSocketAddressAddress       ,
        getInetSocketAddressAddress             ,
    #if ENABLE_OVERLOADING
        inetSocketAddressAddress                ,
    #endif

    -- ** flowinfo #attr:flowinfo#
    {- | The @sin6_flowinfo@ field, for IPv6 addresses.

    /Since: 2.32/
    -}
    #if ENABLE_OVERLOADING
        InetSocketAddressFlowinfoPropertyInfo   ,
    #endif
        constructInetSocketAddressFlowinfo      ,
        getInetSocketAddressFlowinfo            ,
    #if ENABLE_OVERLOADING
        inetSocketAddressFlowinfo               ,
    #endif

    -- ** port #attr:port#
    {- | /No description available in the introspection data./
    -}
    #if ENABLE_OVERLOADING
        InetSocketAddressPortPropertyInfo       ,
    #endif
        constructInetSocketAddressPort          ,
        getInetSocketAddressPort                ,
    #if ENABLE_OVERLOADING
        inetSocketAddressPort                   ,
    #endif

    -- ** scopeId #attr:scopeId#
    {- | /No description available in the introspection data./
    -}
    #if ENABLE_OVERLOADING
        InetSocketAddressScopeIdPropertyInfo    ,
    #endif
        constructInetSocketAddressScopeId       ,
        getInetSocketAddressScopeId             ,
    #if ENABLE_OVERLOADING
        inetSocketAddressScopeId                ,
    #endif

        ) 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.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.Text as T
    import qualified Data.ByteString.Char8 as B
    import qualified Data.Map as Map
    import qualified Foreign.Ptr as FP

    import qualified GI.GObject.Objects.Object as GObject.Object
    import {-# SOURCE #-} qualified GI.Gio.Interfaces.SocketConnectable as Gio.SocketConnectable
    import {-# SOURCE #-} qualified GI.Gio.Objects.InetAddress as Gio.InetAddress
    import {-# SOURCE #-} qualified GI.Gio.Objects.SocketAddress as Gio.SocketAddress

    -- | Memory-managed wrapper type.
    newtype InetSocketAddress = InetSocketAddress (ManagedPtr InetSocketAddress)
    foreign import ccall "g_inet_socket_address_get_type"
        c_g_inet_socket_address_get_type :: IO GType

    instance GObject InetSocketAddress where
        gobjectType _ = c_g_inet_socket_address_get_type

    -- | Type class for types which can be safely cast to `InetSocketAddress`, for instance with `toInetSocketAddress`.
    class GObject o => IsInetSocketAddress o
    #if MIN_VERSION_base(4,9,0)
    instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError InetSocketAddress a) =>
        IsInetSocketAddress a
    #endif
    instance IsInetSocketAddress InetSocketAddress
    instance Gio.SocketAddress.IsSocketAddress InetSocketAddress
    instance GObject.Object.IsObject InetSocketAddress
    instance Gio.SocketConnectable.IsSocketConnectable InetSocketAddress

    -- | Cast to `InetSocketAddress`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
    toInetSocketAddress :: (MonadIO m, IsInetSocketAddress o) => o -> m InetSocketAddress
    toInetSocketAddress = liftIO . unsafeCastTo InetSocketAddress

    -- | A convenience alias for `Nothing` :: `Maybe` `InetSocketAddress`.
    noInetSocketAddress :: Maybe InetSocketAddress
    noInetSocketAddress = Nothing

    #if ENABLE_OVERLOADING
    type family ResolveInetSocketAddressMethod (t :: Symbol) (o :: *) :: * where
        ResolveInetSocketAddressMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
        ResolveInetSocketAddressMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
        ResolveInetSocketAddressMethod "enumerate" o = Gio.SocketConnectable.SocketConnectableEnumerateMethodInfo
        ResolveInetSocketAddressMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
        ResolveInetSocketAddressMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
        ResolveInetSocketAddressMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
        ResolveInetSocketAddressMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
        ResolveInetSocketAddressMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
        ResolveInetSocketAddressMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
        ResolveInetSocketAddressMethod "proxyEnumerate" o = Gio.SocketConnectable.SocketConnectableProxyEnumerateMethodInfo
        ResolveInetSocketAddressMethod "ref" o = GObject.Object.ObjectRefMethodInfo
        ResolveInetSocketAddressMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
        ResolveInetSocketAddressMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
        ResolveInetSocketAddressMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
        ResolveInetSocketAddressMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
        ResolveInetSocketAddressMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
        ResolveInetSocketAddressMethod "toNative" o = Gio.SocketAddress.SocketAddressToNativeMethodInfo
        ResolveInetSocketAddressMethod "toString" o = Gio.SocketConnectable.SocketConnectableToStringMethodInfo
        ResolveInetSocketAddressMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
        ResolveInetSocketAddressMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
        ResolveInetSocketAddressMethod "getAddress" o = InetSocketAddressGetAddressMethodInfo
        ResolveInetSocketAddressMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
        ResolveInetSocketAddressMethod "getFamily" o = Gio.SocketAddress.SocketAddressGetFamilyMethodInfo
        ResolveInetSocketAddressMethod "getFlowinfo" o = InetSocketAddressGetFlowinfoMethodInfo
        ResolveInetSocketAddressMethod "getNativeSize" o = Gio.SocketAddress.SocketAddressGetNativeSizeMethodInfo
        ResolveInetSocketAddressMethod "getPort" o = InetSocketAddressGetPortMethodInfo
        ResolveInetSocketAddressMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
        ResolveInetSocketAddressMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
        ResolveInetSocketAddressMethod "getScopeId" o = InetSocketAddressGetScopeIdMethodInfo
        ResolveInetSocketAddressMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
        ResolveInetSocketAddressMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
        ResolveInetSocketAddressMethod l o = O.MethodResolutionFailed l o

    instance (info ~ ResolveInetSocketAddressMethod t InetSocketAddress, O.MethodInfo info InetSocketAddress p) => O.IsLabelProxy t (InetSocketAddress -> p) where
        fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

    #if MIN_VERSION_base(4,9,0)
    instance (info ~ ResolveInetSocketAddressMethod t InetSocketAddress, O.MethodInfo info InetSocketAddress p) => O.IsLabel t (InetSocketAddress -> p) where
    #if MIN_VERSION_base(4,10,0)
        fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
    #else
        fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
    #endif
    #endif

    #endif

    -- VVV Prop "address"
       -- Type: TInterface (Name {namespace = "Gio", name = "InetAddress"})
       -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
       -- Nullable: (Just False,Nothing)

    {- |
    Get the value of the “@address@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.get' inetSocketAddress #address
    @
    -}
    getInetSocketAddressAddress :: (MonadIO m, IsInetSocketAddress o) => o -> m Gio.InetAddress.InetAddress
    getInetSocketAddressAddress obj = liftIO $ checkUnexpectedNothing "getInetSocketAddressAddress" $ getObjectPropertyObject obj "address" Gio.InetAddress.InetAddress

    {- |
    Construct a `GValueConstruct` with valid value for the “@address@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
    -}
    constructInetSocketAddressAddress :: (IsInetSocketAddress o, Gio.InetAddress.IsInetAddress a) => a -> IO (GValueConstruct o)
    constructInetSocketAddressAddress val = constructObjectPropertyObject "address" (Just val)

    #if ENABLE_OVERLOADING
    data InetSocketAddressAddressPropertyInfo
    instance AttrInfo InetSocketAddressAddressPropertyInfo where
        type AttrAllowedOps InetSocketAddressAddressPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
        type AttrSetTypeConstraint InetSocketAddressAddressPropertyInfo = Gio.InetAddress.IsInetAddress
        type AttrBaseTypeConstraint InetSocketAddressAddressPropertyInfo = IsInetSocketAddress
        type AttrGetType InetSocketAddressAddressPropertyInfo = Gio.InetAddress.InetAddress
        type AttrLabel InetSocketAddressAddressPropertyInfo = "address"
        type AttrOrigin InetSocketAddressAddressPropertyInfo = InetSocketAddress
        attrGet _ = getInetSocketAddressAddress
        attrSet _ = undefined
        attrConstruct _ = constructInetSocketAddressAddress
        attrClear _ = undefined
    #endif

    -- VVV Prop "flowinfo"
       -- Type: TBasicType TUInt
       -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
       -- Nullable: (Nothing,Nothing)

    {- |
    Get the value of the “@flowinfo@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.get' inetSocketAddress #flowinfo
    @
    -}
    getInetSocketAddressFlowinfo :: (MonadIO m, IsInetSocketAddress o) => o -> m Word32
    getInetSocketAddressFlowinfo obj = liftIO $ getObjectPropertyUInt32 obj "flowinfo"

    {- |
    Construct a `GValueConstruct` with valid value for the “@flowinfo@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
    -}
    constructInetSocketAddressFlowinfo :: (IsInetSocketAddress o) => Word32 -> IO (GValueConstruct o)
    constructInetSocketAddressFlowinfo val = constructObjectPropertyUInt32 "flowinfo" val

    #if ENABLE_OVERLOADING
    data InetSocketAddressFlowinfoPropertyInfo
    instance AttrInfo InetSocketAddressFlowinfoPropertyInfo where
        type AttrAllowedOps InetSocketAddressFlowinfoPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
        type AttrSetTypeConstraint InetSocketAddressFlowinfoPropertyInfo = (~) Word32
        type AttrBaseTypeConstraint InetSocketAddressFlowinfoPropertyInfo = IsInetSocketAddress
        type AttrGetType InetSocketAddressFlowinfoPropertyInfo = Word32
        type AttrLabel InetSocketAddressFlowinfoPropertyInfo = "flowinfo"
        type AttrOrigin InetSocketAddressFlowinfoPropertyInfo = InetSocketAddress
        attrGet _ = getInetSocketAddressFlowinfo
        attrSet _ = undefined
        attrConstruct _ = constructInetSocketAddressFlowinfo
        attrClear _ = undefined
    #endif

    -- VVV Prop "port"
       -- Type: TBasicType TUInt
       -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
       -- Nullable: (Nothing,Nothing)

    {- |
    Get the value of the “@port@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.get' inetSocketAddress #port
    @
    -}
    getInetSocketAddressPort :: (MonadIO m, IsInetSocketAddress o) => o -> m Word32
    getInetSocketAddressPort obj = liftIO $ getObjectPropertyUInt32 obj "port"

    {- |
    Construct a `GValueConstruct` with valid value for the “@port@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
    -}
    constructInetSocketAddressPort :: (IsInetSocketAddress o) => Word32 -> IO (GValueConstruct o)
    constructInetSocketAddressPort val = constructObjectPropertyUInt32 "port" val

    #if ENABLE_OVERLOADING
    data InetSocketAddressPortPropertyInfo
    instance AttrInfo InetSocketAddressPortPropertyInfo where
        type AttrAllowedOps InetSocketAddressPortPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
        type AttrSetTypeConstraint InetSocketAddressPortPropertyInfo = (~) Word32
        type AttrBaseTypeConstraint InetSocketAddressPortPropertyInfo = IsInetSocketAddress
        type AttrGetType InetSocketAddressPortPropertyInfo = Word32
        type AttrLabel InetSocketAddressPortPropertyInfo = "port"
        type AttrOrigin InetSocketAddressPortPropertyInfo = InetSocketAddress
        attrGet _ = getInetSocketAddressPort
        attrSet _ = undefined
        attrConstruct _ = constructInetSocketAddressPort
        attrClear _ = undefined
    #endif

    -- VVV Prop "scope-id"
       -- Type: TBasicType TUInt
       -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
       -- Nullable: (Nothing,Nothing)

    {- |
    Get the value of the “@scope-id@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.get' inetSocketAddress #scopeId
    @
    -}
    getInetSocketAddressScopeId :: (MonadIO m, IsInetSocketAddress o) => o -> m Word32
    getInetSocketAddressScopeId obj = liftIO $ getObjectPropertyUInt32 obj "scope-id"

    {- |
    Construct a `GValueConstruct` with valid value for the “@scope-id@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
    -}
    constructInetSocketAddressScopeId :: (IsInetSocketAddress o) => Word32 -> IO (GValueConstruct o)
    constructInetSocketAddressScopeId val = constructObjectPropertyUInt32 "scope-id" val

    #if ENABLE_OVERLOADING
    data InetSocketAddressScopeIdPropertyInfo
    instance AttrInfo InetSocketAddressScopeIdPropertyInfo where
        type AttrAllowedOps InetSocketAddressScopeIdPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
        type AttrSetTypeConstraint InetSocketAddressScopeIdPropertyInfo = (~) Word32
        type AttrBaseTypeConstraint InetSocketAddressScopeIdPropertyInfo = IsInetSocketAddress
        type AttrGetType InetSocketAddressScopeIdPropertyInfo = Word32
        type AttrLabel InetSocketAddressScopeIdPropertyInfo = "scope-id"
        type AttrOrigin InetSocketAddressScopeIdPropertyInfo = InetSocketAddress
        attrGet _ = getInetSocketAddressScopeId
        attrSet _ = undefined
        attrConstruct _ = constructInetSocketAddressScopeId
        attrClear _ = undefined
    #endif

    #if ENABLE_OVERLOADING
    instance O.HasAttributeList InetSocketAddress
    type instance O.AttributeList InetSocketAddress = InetSocketAddressAttributeList
    type InetSocketAddressAttributeList = ('[ '("address", InetSocketAddressAddressPropertyInfo), '("family", Gio.SocketAddress.SocketAddressFamilyPropertyInfo), '("flowinfo", InetSocketAddressFlowinfoPropertyInfo), '("port", InetSocketAddressPortPropertyInfo), '("scopeId", InetSocketAddressScopeIdPropertyInfo)] :: [(Symbol, *)])
    #endif

    #if ENABLE_OVERLOADING
    inetSocketAddressAddress :: AttrLabelProxy "address"
    inetSocketAddressAddress = AttrLabelProxy

    inetSocketAddressFlowinfo :: AttrLabelProxy "flowinfo"
    inetSocketAddressFlowinfo = AttrLabelProxy

    inetSocketAddressPort :: AttrLabelProxy "port"
    inetSocketAddressPort = AttrLabelProxy

    inetSocketAddressScopeId :: AttrLabelProxy "scopeId"
    inetSocketAddressScopeId = AttrLabelProxy

    #endif

    #if ENABLE_OVERLOADING
    type instance O.SignalList InetSocketAddress = InetSocketAddressSignalList
    type InetSocketAddressSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

    #endif

    -- method InetSocketAddress::new
    -- method type : Constructor
    -- Args : [Arg {argCName = "address", argType = TInterface (Name {namespace = "Gio", name = "InetAddress"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GInetAddress", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "port", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a port number", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TInterface (Name {namespace = "Gio", name = "InetSocketAddress"}))
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_inet_socket_address_new" g_inet_socket_address_new ::
        Ptr Gio.InetAddress.InetAddress ->      -- address : TInterface (Name {namespace = "Gio", name = "InetAddress"})
        Word16 ->                               -- port : TBasicType TUInt16
        IO (Ptr InetSocketAddress)

    {- |
    Creates a new 'GI.Gio.Objects.InetSocketAddress.InetSocketAddress' for /@address@/ and /@port@/.

    /Since: 2.22/
    -}
    inetSocketAddressNew ::
        (B.CallStack.HasCallStack, MonadIO m, Gio.InetAddress.IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> Word16
        {- ^ /@port@/: a port number -}
        -> m InetSocketAddress
        {- ^ __Returns:__ a new 'GI.Gio.Objects.InetSocketAddress.InetSocketAddress' -}
    inetSocketAddressNew address port = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_socket_address_new address' port
        checkUnexpectedReturnNULL "inetSocketAddressNew" result
        result' <- (wrapObject InetSocketAddress) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    #endif

    -- method InetSocketAddress::new_from_string
    -- method type : Constructor
    -- Args : [Arg {argCName = "address", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the string form of an IP address", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "port", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a port number", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TInterface (Name {namespace = "Gio", name = "InetSocketAddress"}))
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_inet_socket_address_new_from_string" g_inet_socket_address_new_from_string ::
        CString ->                              -- address : TBasicType TUTF8
        Word32 ->                               -- port : TBasicType TUInt
        IO (Ptr InetSocketAddress)

    {- |
    Creates a new 'GI.Gio.Objects.InetSocketAddress.InetSocketAddress' for /@address@/ and /@port@/.

    If /@address@/ is an IPv6 address, it can also contain a scope ID
    (separated from the address by a @%@).

    /Since: 2.40/
    -}
    inetSocketAddressNewFromString ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        T.Text
        {- ^ /@address@/: the string form of an IP address -}
        -> Word32
        {- ^ /@port@/: a port number -}
        -> m InetSocketAddress
        {- ^ __Returns:__ a new 'GI.Gio.Objects.InetSocketAddress.InetSocketAddress', or 'Nothing' if /@address@/ cannot be
    parsed. -}
    inetSocketAddressNewFromString address port = liftIO $ do
        address' <- textToCString address
        result <- g_inet_socket_address_new_from_string address' port
        checkUnexpectedReturnNULL "inetSocketAddressNewFromString" result
        result' <- (wrapObject InetSocketAddress) result
        freeMem address'
        return result'

    #if ENABLE_OVERLOADING
    #endif

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

    foreign import ccall "g_inet_socket_address_get_address" g_inet_socket_address_get_address ::
        Ptr InetSocketAddress ->                -- address : TInterface (Name {namespace = "Gio", name = "InetSocketAddress"})
        IO (Ptr Gio.InetAddress.InetAddress)

    {- |
    Gets /@address@/\'s 'GI.Gio.Objects.InetAddress.InetAddress'.

    /Since: 2.22/
    -}
    inetSocketAddressGetAddress ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetSocketAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetSocketAddress.InetSocketAddress' -}
        -> m Gio.InetAddress.InetAddress
        {- ^ __Returns:__ the 'GI.Gio.Objects.InetAddress.InetAddress' for /@address@/, which must be
    'GI.GObject.Objects.Object.objectRef'\'d if it will be stored -}
    inetSocketAddressGetAddress address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_socket_address_get_address address'
        checkUnexpectedReturnNULL "inetSocketAddressGetAddress" result
        result' <- (newObject Gio.InetAddress.InetAddress) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetSocketAddressGetAddressMethodInfo
    instance (signature ~ (m Gio.InetAddress.InetAddress), MonadIO m, IsInetSocketAddress a) => O.MethodInfo InetSocketAddressGetAddressMethodInfo a signature where
        overloadedMethod _ = inetSocketAddressGetAddress

    #endif

    -- method InetSocketAddress::get_flowinfo
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "address", argType = TInterface (Name {namespace = "Gio", name = "InetSocketAddress"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a %G_SOCKET_FAMILY_IPV6 #GInetSocketAddress", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TBasicType TUInt32)
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_inet_socket_address_get_flowinfo" g_inet_socket_address_get_flowinfo ::
        Ptr InetSocketAddress ->                -- address : TInterface (Name {namespace = "Gio", name = "InetSocketAddress"})
        IO Word32

    {- |
    Gets the @sin6_flowinfo@ field from /@address@/,
    which must be an IPv6 address.

    /Since: 2.32/
    -}
    inetSocketAddressGetFlowinfo ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetSocketAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Enums.SocketFamilyIpv6' 'GI.Gio.Objects.InetSocketAddress.InetSocketAddress' -}
        -> m Word32
        {- ^ __Returns:__ the flowinfo field -}
    inetSocketAddressGetFlowinfo address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_socket_address_get_flowinfo address'
        touchManagedPtr address
        return result

    #if ENABLE_OVERLOADING
    data InetSocketAddressGetFlowinfoMethodInfo
    instance (signature ~ (m Word32), MonadIO m, IsInetSocketAddress a) => O.MethodInfo InetSocketAddressGetFlowinfoMethodInfo a signature where
        overloadedMethod _ = inetSocketAddressGetFlowinfo

    #endif

    -- method InetSocketAddress::get_port
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "address", argType = TInterface (Name {namespace = "Gio", name = "InetSocketAddress"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GInetSocketAddress", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TBasicType TUInt16)
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_inet_socket_address_get_port" g_inet_socket_address_get_port ::
        Ptr InetSocketAddress ->                -- address : TInterface (Name {namespace = "Gio", name = "InetSocketAddress"})
        IO Word16

    {- |
    Gets /@address@/\'s port.

    /Since: 2.22/
    -}
    inetSocketAddressGetPort ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetSocketAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetSocketAddress.InetSocketAddress' -}
        -> m Word16
        {- ^ __Returns:__ the port for /@address@/ -}
    inetSocketAddressGetPort address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_socket_address_get_port address'
        touchManagedPtr address
        return result

    #if ENABLE_OVERLOADING
    data InetSocketAddressGetPortMethodInfo
    instance (signature ~ (m Word16), MonadIO m, IsInetSocketAddress a) => O.MethodInfo InetSocketAddressGetPortMethodInfo a signature where
        overloadedMethod _ = inetSocketAddressGetPort

    #endif

    -- method InetSocketAddress::get_scope_id
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "address", argType = TInterface (Name {namespace = "Gio", name = "InetSocketAddress"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a %G_SOCKET_FAMILY_IPV6 #GInetAddress", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TBasicType TUInt32)
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_inet_socket_address_get_scope_id" g_inet_socket_address_get_scope_id ::
        Ptr InetSocketAddress ->                -- address : TInterface (Name {namespace = "Gio", name = "InetSocketAddress"})
        IO Word32

    {- |
    Gets the @sin6_scope_id@ field from /@address@/,
    which must be an IPv6 address.

    /Since: 2.32/
    -}
    inetSocketAddressGetScopeId ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetSocketAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Enums.SocketFamilyIpv6' 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Word32
        {- ^ __Returns:__ the scope id field -}
    inetSocketAddressGetScopeId address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_socket_address_get_scope_id address'
        touchManagedPtr address
        return result

    #if ENABLE_OVERLOADING
    data InetSocketAddressGetScopeIdMethodInfo
    instance (signature ~ (m Word32), MonadIO m, IsInetSocketAddress a) => O.MethodInfo InetSocketAddressGetScopeIdMethodInfo a signature where
        overloadedMethod _ = inetSocketAddressGetScopeId

    #endif