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

    'GI.Gio.Objects.InetAddress.InetAddress' represents an IPv4 or IPv6 internet address. Use
    'GI.Gio.Objects.Resolver.resolverLookupByName' or 'GI.Gio.Objects.Resolver.resolverLookupByNameAsync' to
    look up the 'GI.Gio.Objects.InetAddress.InetAddress' for a hostname. Use
    'GI.Gio.Objects.Resolver.resolverLookupByAddress' or
    'GI.Gio.Objects.Resolver.resolverLookupByAddressAsync' to look up the hostname for a
    'GI.Gio.Objects.InetAddress.InetAddress'.

    To actually connect to a remote host, you will need a
    'GI.Gio.Objects.InetSocketAddress.InetSocketAddress' (which includes a 'GI.Gio.Objects.InetAddress.InetAddress' as well as a
    port number).
    -}

    #define ENABLE_OVERLOADING \
           (!defined(__HADDOCK_VERSION__))

    module GI.Gio.Objects.InetAddress
        (

    -- * Exported types
        InetAddress(..)                         ,
        IsInetAddress                           ,
        toInetAddress                           ,
        noInetAddress                           ,

     -- * Methods
    -- ** equal #method:equal#

    #if ENABLE_OVERLOADING
        InetAddressEqualMethodInfo              ,
    #endif
        inetAddressEqual                        ,

    -- ** getFamily #method:getFamily#

    #if ENABLE_OVERLOADING
        InetAddressGetFamilyMethodInfo          ,
    #endif
        inetAddressGetFamily                    ,

    -- ** getIsAny #method:getIsAny#

    #if ENABLE_OVERLOADING
        InetAddressGetIsAnyMethodInfo           ,
    #endif
        inetAddressGetIsAny                     ,

    -- ** getIsLinkLocal #method:getIsLinkLocal#

    #if ENABLE_OVERLOADING
        InetAddressGetIsLinkLocalMethodInfo     ,
    #endif
        inetAddressGetIsLinkLocal               ,

    -- ** getIsLoopback #method:getIsLoopback#

    #if ENABLE_OVERLOADING
        InetAddressGetIsLoopbackMethodInfo      ,
    #endif
        inetAddressGetIsLoopback                ,

    -- ** getIsMcGlobal #method:getIsMcGlobal#

    #if ENABLE_OVERLOADING
        InetAddressGetIsMcGlobalMethodInfo      ,
    #endif
        inetAddressGetIsMcGlobal                ,

    -- ** getIsMcLinkLocal #method:getIsMcLinkLocal#

    #if ENABLE_OVERLOADING
        InetAddressGetIsMcLinkLocalMethodInfo   ,
    #endif
        inetAddressGetIsMcLinkLocal             ,

    -- ** getIsMcNodeLocal #method:getIsMcNodeLocal#

    #if ENABLE_OVERLOADING
        InetAddressGetIsMcNodeLocalMethodInfo   ,
    #endif
        inetAddressGetIsMcNodeLocal             ,

    -- ** getIsMcOrgLocal #method:getIsMcOrgLocal#

    #if ENABLE_OVERLOADING
        InetAddressGetIsMcOrgLocalMethodInfo    ,
    #endif
        inetAddressGetIsMcOrgLocal              ,

    -- ** getIsMcSiteLocal #method:getIsMcSiteLocal#

    #if ENABLE_OVERLOADING
        InetAddressGetIsMcSiteLocalMethodInfo   ,
    #endif
        inetAddressGetIsMcSiteLocal             ,

    -- ** getIsMulticast #method:getIsMulticast#

    #if ENABLE_OVERLOADING
        InetAddressGetIsMulticastMethodInfo     ,
    #endif
        inetAddressGetIsMulticast               ,

    -- ** getIsSiteLocal #method:getIsSiteLocal#

    #if ENABLE_OVERLOADING
        InetAddressGetIsSiteLocalMethodInfo     ,
    #endif
        inetAddressGetIsSiteLocal               ,

    -- ** getNativeSize #method:getNativeSize#

    #if ENABLE_OVERLOADING
        InetAddressGetNativeSizeMethodInfo      ,
    #endif
        inetAddressGetNativeSize                ,

    -- ** newAny #method:newAny#

        inetAddressNewAny                       ,

    -- ** newFromBytes #method:newFromBytes#

        inetAddressNewFromBytes                 ,

    -- ** newFromString #method:newFromString#

        inetAddressNewFromString                ,

    -- ** newLoopback #method:newLoopback#

        inetAddressNewLoopback                  ,

    -- ** toString #method:toString#

    #if ENABLE_OVERLOADING
        InetAddressToStringMethodInfo           ,
    #endif
        inetAddressToString                     ,

     -- * Properties
    -- ** bytes #attr:bytes#
    {- | /No description available in the introspection data./
    -}
    #if ENABLE_OVERLOADING
        InetAddressBytesPropertyInfo            ,
    #endif
        constructInetAddressBytes               ,
        getInetAddressBytes                     ,
    #if ENABLE_OVERLOADING
        inetAddressBytes                        ,
    #endif

    -- ** family #attr:family#
    {- | /No description available in the introspection data./
    -}
    #if ENABLE_OVERLOADING
        InetAddressFamilyPropertyInfo           ,
    #endif
        constructInetAddressFamily              ,
        getInetAddressFamily                    ,
    #if ENABLE_OVERLOADING
        inetAddressFamily                       ,
    #endif

    -- ** isAny #attr:isAny#
    {- | Whether this is the \"any\" address for its family.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsAny'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsAnyPropertyInfo            ,
    #endif
        getInetAddressIsAny                     ,
    #if ENABLE_OVERLOADING
        inetAddressIsAny                        ,
    #endif

    -- ** isLinkLocal #attr:isLinkLocal#
    {- | Whether this is a link-local address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsLinkLocal'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsLinkLocalPropertyInfo      ,
    #endif
        getInetAddressIsLinkLocal               ,
    #if ENABLE_OVERLOADING
        inetAddressIsLinkLocal                  ,
    #endif

    -- ** isLoopback #attr:isLoopback#
    {- | Whether this is the loopback address for its family.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsLoopback'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsLoopbackPropertyInfo       ,
    #endif
        getInetAddressIsLoopback                ,
    #if ENABLE_OVERLOADING
        inetAddressIsLoopback                   ,
    #endif

    -- ** isMcGlobal #attr:isMcGlobal#
    {- | Whether this is a global multicast address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsMcGlobal'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsMcGlobalPropertyInfo       ,
    #endif
        getInetAddressIsMcGlobal                ,
    #if ENABLE_OVERLOADING
        inetAddressIsMcGlobal                   ,
    #endif

    -- ** isMcLinkLocal #attr:isMcLinkLocal#
    {- | Whether this is a link-local multicast address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsMcLinkLocal'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsMcLinkLocalPropertyInfo    ,
    #endif
        getInetAddressIsMcLinkLocal             ,
    #if ENABLE_OVERLOADING
        inetAddressIsMcLinkLocal                ,
    #endif

    -- ** isMcNodeLocal #attr:isMcNodeLocal#
    {- | Whether this is a node-local multicast address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsMcNodeLocal'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsMcNodeLocalPropertyInfo    ,
    #endif
        getInetAddressIsMcNodeLocal             ,
    #if ENABLE_OVERLOADING
        inetAddressIsMcNodeLocal                ,
    #endif

    -- ** isMcOrgLocal #attr:isMcOrgLocal#
    {- | Whether this is an organization-local multicast address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsMcOrgLocal'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsMcOrgLocalPropertyInfo     ,
    #endif
        getInetAddressIsMcOrgLocal              ,
    #if ENABLE_OVERLOADING
        inetAddressIsMcOrgLocal                 ,
    #endif

    -- ** isMcSiteLocal #attr:isMcSiteLocal#
    {- | Whether this is a site-local multicast address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsMcSiteLocal'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsMcSiteLocalPropertyInfo    ,
    #endif
        getInetAddressIsMcSiteLocal             ,
    #if ENABLE_OVERLOADING
        inetAddressIsMcSiteLocal                ,
    #endif

    -- ** isMulticast #attr:isMulticast#
    {- | Whether this is a multicast address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsMulticast'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsMulticastPropertyInfo      ,
    #endif
        getInetAddressIsMulticast               ,
    #if ENABLE_OVERLOADING
        inetAddressIsMulticast                  ,
    #endif

    -- ** isSiteLocal #attr:isSiteLocal#
    {- | Whether this is a site-local address.
    See 'GI.Gio.Objects.InetAddress.inetAddressGetIsLoopback'.

    /Since: 2.22/
    -}
    #if ENABLE_OVERLOADING
        InetAddressIsSiteLocalPropertyInfo      ,
    #endif
        getInetAddressIsSiteLocal               ,
    #if ENABLE_OVERLOADING
        inetAddressIsSiteLocal                  ,
    #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.Enums as Gio.Enums

    -- | Memory-managed wrapper type.
    newtype InetAddress = InetAddress (ManagedPtr InetAddress)
    foreign import ccall "g_inet_address_get_type"
        c_g_inet_address_get_type :: IO GType

    instance GObject InetAddress where
        gobjectType _ = c_g_inet_address_get_type

    -- | Type class for types which can be safely cast to `InetAddress`, for instance with `toInetAddress`.
    class GObject o => IsInetAddress o
    #if MIN_VERSION_base(4,9,0)
    instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError InetAddress a) =>
        IsInetAddress a
    #endif
    instance IsInetAddress InetAddress
    instance GObject.Object.IsObject InetAddress

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

    -- | A convenience alias for `Nothing` :: `Maybe` `InetAddress`.
    noInetAddress :: Maybe InetAddress
    noInetAddress = Nothing

    #if ENABLE_OVERLOADING
    type family ResolveInetAddressMethod (t :: Symbol) (o :: *) :: * where
        ResolveInetAddressMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
        ResolveInetAddressMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
        ResolveInetAddressMethod "equal" o = InetAddressEqualMethodInfo
        ResolveInetAddressMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
        ResolveInetAddressMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
        ResolveInetAddressMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
        ResolveInetAddressMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
        ResolveInetAddressMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
        ResolveInetAddressMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
        ResolveInetAddressMethod "ref" o = GObject.Object.ObjectRefMethodInfo
        ResolveInetAddressMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
        ResolveInetAddressMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
        ResolveInetAddressMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
        ResolveInetAddressMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
        ResolveInetAddressMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
        ResolveInetAddressMethod "toString" o = InetAddressToStringMethodInfo
        ResolveInetAddressMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
        ResolveInetAddressMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
        ResolveInetAddressMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
        ResolveInetAddressMethod "getFamily" o = InetAddressGetFamilyMethodInfo
        ResolveInetAddressMethod "getIsAny" o = InetAddressGetIsAnyMethodInfo
        ResolveInetAddressMethod "getIsLinkLocal" o = InetAddressGetIsLinkLocalMethodInfo
        ResolveInetAddressMethod "getIsLoopback" o = InetAddressGetIsLoopbackMethodInfo
        ResolveInetAddressMethod "getIsMcGlobal" o = InetAddressGetIsMcGlobalMethodInfo
        ResolveInetAddressMethod "getIsMcLinkLocal" o = InetAddressGetIsMcLinkLocalMethodInfo
        ResolveInetAddressMethod "getIsMcNodeLocal" o = InetAddressGetIsMcNodeLocalMethodInfo
        ResolveInetAddressMethod "getIsMcOrgLocal" o = InetAddressGetIsMcOrgLocalMethodInfo
        ResolveInetAddressMethod "getIsMcSiteLocal" o = InetAddressGetIsMcSiteLocalMethodInfo
        ResolveInetAddressMethod "getIsMulticast" o = InetAddressGetIsMulticastMethodInfo
        ResolveInetAddressMethod "getIsSiteLocal" o = InetAddressGetIsSiteLocalMethodInfo
        ResolveInetAddressMethod "getNativeSize" o = InetAddressGetNativeSizeMethodInfo
        ResolveInetAddressMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
        ResolveInetAddressMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
        ResolveInetAddressMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
        ResolveInetAddressMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
        ResolveInetAddressMethod l o = O.MethodResolutionFailed l o

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

    #if MIN_VERSION_base(4,9,0)
    instance (info ~ ResolveInetAddressMethod t InetAddress, O.MethodInfo info InetAddress p) => O.IsLabel t (InetAddress -> 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 "bytes"
       -- Type: TBasicType TPtr
       -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
       -- Nullable: (Nothing,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #bytes
    @
    -}
    getInetAddressBytes :: (MonadIO m, IsInetAddress o) => o -> m (Ptr ())
    getInetAddressBytes obj = liftIO $ getObjectPropertyPtr obj "bytes"

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

    #if ENABLE_OVERLOADING
    data InetAddressBytesPropertyInfo
    instance AttrInfo InetAddressBytesPropertyInfo where
        type AttrAllowedOps InetAddressBytesPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
        type AttrSetTypeConstraint InetAddressBytesPropertyInfo = (~) (Ptr ())
        type AttrBaseTypeConstraint InetAddressBytesPropertyInfo = IsInetAddress
        type AttrGetType InetAddressBytesPropertyInfo = (Ptr ())
        type AttrLabel InetAddressBytesPropertyInfo = "bytes"
        type AttrOrigin InetAddressBytesPropertyInfo = InetAddress
        attrGet _ = getInetAddressBytes
        attrSet _ = undefined
        attrConstruct _ = constructInetAddressBytes
        attrClear _ = undefined
    #endif

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

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #family
    @
    -}
    getInetAddressFamily :: (MonadIO m, IsInetAddress o) => o -> m Gio.Enums.SocketFamily
    getInetAddressFamily obj = liftIO $ getObjectPropertyEnum obj "family"

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

    #if ENABLE_OVERLOADING
    data InetAddressFamilyPropertyInfo
    instance AttrInfo InetAddressFamilyPropertyInfo where
        type AttrAllowedOps InetAddressFamilyPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
        type AttrSetTypeConstraint InetAddressFamilyPropertyInfo = (~) Gio.Enums.SocketFamily
        type AttrBaseTypeConstraint InetAddressFamilyPropertyInfo = IsInetAddress
        type AttrGetType InetAddressFamilyPropertyInfo = Gio.Enums.SocketFamily
        type AttrLabel InetAddressFamilyPropertyInfo = "family"
        type AttrOrigin InetAddressFamilyPropertyInfo = InetAddress
        attrGet _ = getInetAddressFamily
        attrSet _ = undefined
        attrConstruct _ = constructInetAddressFamily
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-any"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isAny
    @
    -}
    getInetAddressIsAny :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsAny obj = liftIO $ getObjectPropertyBool obj "is-any"

    #if ENABLE_OVERLOADING
    data InetAddressIsAnyPropertyInfo
    instance AttrInfo InetAddressIsAnyPropertyInfo where
        type AttrAllowedOps InetAddressIsAnyPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsAnyPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsAnyPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsAnyPropertyInfo = Bool
        type AttrLabel InetAddressIsAnyPropertyInfo = "is-any"
        type AttrOrigin InetAddressIsAnyPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsAny
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-link-local"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isLinkLocal
    @
    -}
    getInetAddressIsLinkLocal :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsLinkLocal obj = liftIO $ getObjectPropertyBool obj "is-link-local"

    #if ENABLE_OVERLOADING
    data InetAddressIsLinkLocalPropertyInfo
    instance AttrInfo InetAddressIsLinkLocalPropertyInfo where
        type AttrAllowedOps InetAddressIsLinkLocalPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsLinkLocalPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsLinkLocalPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsLinkLocalPropertyInfo = Bool
        type AttrLabel InetAddressIsLinkLocalPropertyInfo = "is-link-local"
        type AttrOrigin InetAddressIsLinkLocalPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsLinkLocal
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-loopback"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isLoopback
    @
    -}
    getInetAddressIsLoopback :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsLoopback obj = liftIO $ getObjectPropertyBool obj "is-loopback"

    #if ENABLE_OVERLOADING
    data InetAddressIsLoopbackPropertyInfo
    instance AttrInfo InetAddressIsLoopbackPropertyInfo where
        type AttrAllowedOps InetAddressIsLoopbackPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsLoopbackPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsLoopbackPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsLoopbackPropertyInfo = Bool
        type AttrLabel InetAddressIsLoopbackPropertyInfo = "is-loopback"
        type AttrOrigin InetAddressIsLoopbackPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsLoopback
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-mc-global"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isMcGlobal
    @
    -}
    getInetAddressIsMcGlobal :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsMcGlobal obj = liftIO $ getObjectPropertyBool obj "is-mc-global"

    #if ENABLE_OVERLOADING
    data InetAddressIsMcGlobalPropertyInfo
    instance AttrInfo InetAddressIsMcGlobalPropertyInfo where
        type AttrAllowedOps InetAddressIsMcGlobalPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsMcGlobalPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsMcGlobalPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsMcGlobalPropertyInfo = Bool
        type AttrLabel InetAddressIsMcGlobalPropertyInfo = "is-mc-global"
        type AttrOrigin InetAddressIsMcGlobalPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsMcGlobal
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-mc-link-local"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isMcLinkLocal
    @
    -}
    getInetAddressIsMcLinkLocal :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsMcLinkLocal obj = liftIO $ getObjectPropertyBool obj "is-mc-link-local"

    #if ENABLE_OVERLOADING
    data InetAddressIsMcLinkLocalPropertyInfo
    instance AttrInfo InetAddressIsMcLinkLocalPropertyInfo where
        type AttrAllowedOps InetAddressIsMcLinkLocalPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsMcLinkLocalPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsMcLinkLocalPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsMcLinkLocalPropertyInfo = Bool
        type AttrLabel InetAddressIsMcLinkLocalPropertyInfo = "is-mc-link-local"
        type AttrOrigin InetAddressIsMcLinkLocalPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsMcLinkLocal
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-mc-node-local"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isMcNodeLocal
    @
    -}
    getInetAddressIsMcNodeLocal :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsMcNodeLocal obj = liftIO $ getObjectPropertyBool obj "is-mc-node-local"

    #if ENABLE_OVERLOADING
    data InetAddressIsMcNodeLocalPropertyInfo
    instance AttrInfo InetAddressIsMcNodeLocalPropertyInfo where
        type AttrAllowedOps InetAddressIsMcNodeLocalPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsMcNodeLocalPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsMcNodeLocalPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsMcNodeLocalPropertyInfo = Bool
        type AttrLabel InetAddressIsMcNodeLocalPropertyInfo = "is-mc-node-local"
        type AttrOrigin InetAddressIsMcNodeLocalPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsMcNodeLocal
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-mc-org-local"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isMcOrgLocal
    @
    -}
    getInetAddressIsMcOrgLocal :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsMcOrgLocal obj = liftIO $ getObjectPropertyBool obj "is-mc-org-local"

    #if ENABLE_OVERLOADING
    data InetAddressIsMcOrgLocalPropertyInfo
    instance AttrInfo InetAddressIsMcOrgLocalPropertyInfo where
        type AttrAllowedOps InetAddressIsMcOrgLocalPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsMcOrgLocalPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsMcOrgLocalPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsMcOrgLocalPropertyInfo = Bool
        type AttrLabel InetAddressIsMcOrgLocalPropertyInfo = "is-mc-org-local"
        type AttrOrigin InetAddressIsMcOrgLocalPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsMcOrgLocal
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-mc-site-local"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isMcSiteLocal
    @
    -}
    getInetAddressIsMcSiteLocal :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsMcSiteLocal obj = liftIO $ getObjectPropertyBool obj "is-mc-site-local"

    #if ENABLE_OVERLOADING
    data InetAddressIsMcSiteLocalPropertyInfo
    instance AttrInfo InetAddressIsMcSiteLocalPropertyInfo where
        type AttrAllowedOps InetAddressIsMcSiteLocalPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsMcSiteLocalPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsMcSiteLocalPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsMcSiteLocalPropertyInfo = Bool
        type AttrLabel InetAddressIsMcSiteLocalPropertyInfo = "is-mc-site-local"
        type AttrOrigin InetAddressIsMcSiteLocalPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsMcSiteLocal
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-multicast"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isMulticast
    @
    -}
    getInetAddressIsMulticast :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsMulticast obj = liftIO $ getObjectPropertyBool obj "is-multicast"

    #if ENABLE_OVERLOADING
    data InetAddressIsMulticastPropertyInfo
    instance AttrInfo InetAddressIsMulticastPropertyInfo where
        type AttrAllowedOps InetAddressIsMulticastPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsMulticastPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsMulticastPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsMulticastPropertyInfo = Bool
        type AttrLabel InetAddressIsMulticastPropertyInfo = "is-multicast"
        type AttrOrigin InetAddressIsMulticastPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsMulticast
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    -- VVV Prop "is-site-local"
       -- Type: TBasicType TBoolean
       -- Flags: [PropertyReadable]
       -- Nullable: (Just False,Nothing)

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

    @
    'Data.GI.Base.Attributes.get' inetAddress #isSiteLocal
    @
    -}
    getInetAddressIsSiteLocal :: (MonadIO m, IsInetAddress o) => o -> m Bool
    getInetAddressIsSiteLocal obj = liftIO $ getObjectPropertyBool obj "is-site-local"

    #if ENABLE_OVERLOADING
    data InetAddressIsSiteLocalPropertyInfo
    instance AttrInfo InetAddressIsSiteLocalPropertyInfo where
        type AttrAllowedOps InetAddressIsSiteLocalPropertyInfo = '[ 'AttrGet]
        type AttrSetTypeConstraint InetAddressIsSiteLocalPropertyInfo = (~) ()
        type AttrBaseTypeConstraint InetAddressIsSiteLocalPropertyInfo = IsInetAddress
        type AttrGetType InetAddressIsSiteLocalPropertyInfo = Bool
        type AttrLabel InetAddressIsSiteLocalPropertyInfo = "is-site-local"
        type AttrOrigin InetAddressIsSiteLocalPropertyInfo = InetAddress
        attrGet _ = getInetAddressIsSiteLocal
        attrSet _ = undefined
        attrConstruct _ = undefined
        attrClear _ = undefined
    #endif

    #if ENABLE_OVERLOADING
    instance O.HasAttributeList InetAddress
    type instance O.AttributeList InetAddress = InetAddressAttributeList
    type InetAddressAttributeList = ('[ '("bytes", InetAddressBytesPropertyInfo), '("family", InetAddressFamilyPropertyInfo), '("isAny", InetAddressIsAnyPropertyInfo), '("isLinkLocal", InetAddressIsLinkLocalPropertyInfo), '("isLoopback", InetAddressIsLoopbackPropertyInfo), '("isMcGlobal", InetAddressIsMcGlobalPropertyInfo), '("isMcLinkLocal", InetAddressIsMcLinkLocalPropertyInfo), '("isMcNodeLocal", InetAddressIsMcNodeLocalPropertyInfo), '("isMcOrgLocal", InetAddressIsMcOrgLocalPropertyInfo), '("isMcSiteLocal", InetAddressIsMcSiteLocalPropertyInfo), '("isMulticast", InetAddressIsMulticastPropertyInfo), '("isSiteLocal", InetAddressIsSiteLocalPropertyInfo)] :: [(Symbol, *)])
    #endif

    #if ENABLE_OVERLOADING
    inetAddressBytes :: AttrLabelProxy "bytes"
    inetAddressBytes = AttrLabelProxy

    inetAddressFamily :: AttrLabelProxy "family"
    inetAddressFamily = AttrLabelProxy

    inetAddressIsAny :: AttrLabelProxy "isAny"
    inetAddressIsAny = AttrLabelProxy

    inetAddressIsLinkLocal :: AttrLabelProxy "isLinkLocal"
    inetAddressIsLinkLocal = AttrLabelProxy

    inetAddressIsLoopback :: AttrLabelProxy "isLoopback"
    inetAddressIsLoopback = AttrLabelProxy

    inetAddressIsMcGlobal :: AttrLabelProxy "isMcGlobal"
    inetAddressIsMcGlobal = AttrLabelProxy

    inetAddressIsMcLinkLocal :: AttrLabelProxy "isMcLinkLocal"
    inetAddressIsMcLinkLocal = AttrLabelProxy

    inetAddressIsMcNodeLocal :: AttrLabelProxy "isMcNodeLocal"
    inetAddressIsMcNodeLocal = AttrLabelProxy

    inetAddressIsMcOrgLocal :: AttrLabelProxy "isMcOrgLocal"
    inetAddressIsMcOrgLocal = AttrLabelProxy

    inetAddressIsMcSiteLocal :: AttrLabelProxy "isMcSiteLocal"
    inetAddressIsMcSiteLocal = AttrLabelProxy

    inetAddressIsMulticast :: AttrLabelProxy "isMulticast"
    inetAddressIsMulticast = AttrLabelProxy

    inetAddressIsSiteLocal :: AttrLabelProxy "isSiteLocal"
    inetAddressIsSiteLocal = AttrLabelProxy

    #endif

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

    #endif

    -- method InetAddress::new_any
    -- method type : Constructor
    -- Args : [Arg {argCName = "family", argType = TInterface (Name {namespace = "Gio", name = "SocketFamily"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the address family", 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_address_new_any" g_inet_address_new_any ::
        CUInt ->                                -- family : TInterface (Name {namespace = "Gio", name = "SocketFamily"})
        IO (Ptr InetAddress)

    {- |
    Creates a 'GI.Gio.Objects.InetAddress.InetAddress' for the \"any\" address (unassigned\/\"don\'t
    care\") for /@family@/.

    /Since: 2.22/
    -}
    inetAddressNewAny ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        Gio.Enums.SocketFamily
        {- ^ /@family@/: the address family -}
        -> m InetAddress
        {- ^ __Returns:__ a new 'GI.Gio.Objects.InetAddress.InetAddress' corresponding to the \"any\" address
    for /@family@/.
        Free the returned object with 'GI.GObject.Objects.Object.objectUnref'. -}
    inetAddressNewAny family = liftIO $ do
        let family' = (fromIntegral . fromEnum) family
        result <- g_inet_address_new_any family'
        checkUnexpectedReturnNULL "inetAddressNewAny" result
        result' <- (wrapObject InetAddress) result
        return result'

    #if ENABLE_OVERLOADING
    #endif

    -- method InetAddress::new_from_bytes
    -- method type : Constructor
    -- Args : [Arg {argCName = "bytes", argType = TCArray False (-1) (-1) (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "raw address data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "family", argType = TInterface (Name {namespace = "Gio", name = "SocketFamily"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the address family of @bytes", 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_address_new_from_bytes" g_inet_address_new_from_bytes ::
        Ptr Word8 ->                            -- bytes : TCArray False (-1) (-1) (TBasicType TUInt8)
        CUInt ->                                -- family : TInterface (Name {namespace = "Gio", name = "SocketFamily"})
        IO (Ptr InetAddress)

    {- |
    Creates a new 'GI.Gio.Objects.InetAddress.InetAddress' from the given /@family@/ and /@bytes@/.
    /@bytes@/ should be 4 bytes for 'GI.Gio.Enums.SocketFamilyIpv4' and 16 bytes for
    'GI.Gio.Enums.SocketFamilyIpv6'.

    /Since: 2.22/
    -}
    inetAddressNewFromBytes ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        Ptr Word8
        {- ^ /@bytes@/: raw address data -}
        -> Gio.Enums.SocketFamily
        {- ^ /@family@/: the address family of /@bytes@/ -}
        -> m InetAddress
        {- ^ __Returns:__ a new 'GI.Gio.Objects.InetAddress.InetAddress' corresponding to /@family@/ and /@bytes@/.
        Free the returned object with 'GI.GObject.Objects.Object.objectUnref'. -}
    inetAddressNewFromBytes bytes family = liftIO $ do
        let family' = (fromIntegral . fromEnum) family
        result <- g_inet_address_new_from_bytes bytes family'
        checkUnexpectedReturnNULL "inetAddressNewFromBytes" result
        result' <- (wrapObject InetAddress) result
        return result'

    #if ENABLE_OVERLOADING
    #endif

    -- method InetAddress::new_from_string
    -- method type : Constructor
    -- Args : [Arg {argCName = "string", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a string representation of an IP address", 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_address_new_from_string" g_inet_address_new_from_string ::
        CString ->                              -- string : TBasicType TUTF8
        IO (Ptr InetAddress)

    {- |
    Parses /@string@/ as an IP address and creates a new 'GI.Gio.Objects.InetAddress.InetAddress'.

    /Since: 2.22/
    -}
    inetAddressNewFromString ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        T.Text
        {- ^ /@string@/: a string representation of an IP address -}
        -> m InetAddress
        {- ^ __Returns:__ a new 'GI.Gio.Objects.InetAddress.InetAddress' corresponding to /@string@/, or 'Nothing' if
    /@string@/ could not be parsed.
        Free the returned object with 'GI.GObject.Objects.Object.objectUnref'. -}
    inetAddressNewFromString string = liftIO $ do
        string' <- textToCString string
        result <- g_inet_address_new_from_string string'
        checkUnexpectedReturnNULL "inetAddressNewFromString" result
        result' <- (wrapObject InetAddress) result
        freeMem string'
        return result'

    #if ENABLE_OVERLOADING
    #endif

    -- method InetAddress::new_loopback
    -- method type : Constructor
    -- Args : [Arg {argCName = "family", argType = TInterface (Name {namespace = "Gio", name = "SocketFamily"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the address family", 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_address_new_loopback" g_inet_address_new_loopback ::
        CUInt ->                                -- family : TInterface (Name {namespace = "Gio", name = "SocketFamily"})
        IO (Ptr InetAddress)

    {- |
    Creates a 'GI.Gio.Objects.InetAddress.InetAddress' for the loopback address for /@family@/.

    /Since: 2.22/
    -}
    inetAddressNewLoopback ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        Gio.Enums.SocketFamily
        {- ^ /@family@/: the address family -}
        -> m InetAddress
        {- ^ __Returns:__ a new 'GI.Gio.Objects.InetAddress.InetAddress' corresponding to the loopback address
    for /@family@/.
        Free the returned object with 'GI.GObject.Objects.Object.objectUnref'. -}
    inetAddressNewLoopback family = liftIO $ do
        let family' = (fromIntegral . fromEnum) family
        result <- g_inet_address_new_loopback family'
        checkUnexpectedReturnNULL "inetAddressNewLoopback" result
        result' <- (wrapObject InetAddress) result
        return result'

    #if ENABLE_OVERLOADING
    #endif

    -- method InetAddress::equal
    -- method type : OrdinaryMethod
    -- 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 = "other_address", argType = TInterface (Name {namespace = "Gio", name = "InetAddress"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Another #GInetAddress.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_inet_address_equal" g_inet_address_equal ::
        Ptr InetAddress ->                      -- address : TInterface (Name {namespace = "Gio", name = "InetAddress"})
        Ptr InetAddress ->                      -- other_address : TInterface (Name {namespace = "Gio", name = "InetAddress"})
        IO CInt

    {- |
    Checks if two 'GI.Gio.Objects.InetAddress.InetAddress' instances are equal, e.g. the same address.

    /Since: 2.30/
    -}
    inetAddressEqual ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a, IsInetAddress b) =>
        a
        {- ^ /@address@/: A 'GI.Gio.Objects.InetAddress.InetAddress'. -}
        -> b
        {- ^ /@otherAddress@/: Another 'GI.Gio.Objects.InetAddress.InetAddress'. -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ and /@otherAddress@/ are equal, 'False' otherwise. -}
    inetAddressEqual address otherAddress = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        otherAddress' <- unsafeManagedPtrCastPtr otherAddress
        result <- g_inet_address_equal address' otherAddress'
        let result' = (/= 0) result
        touchManagedPtr address
        touchManagedPtr otherAddress
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressEqualMethodInfo
    instance (signature ~ (b -> m Bool), MonadIO m, IsInetAddress a, IsInetAddress b) => O.MethodInfo InetAddressEqualMethodInfo a signature where
        overloadedMethod _ = inetAddressEqual

    #endif

    -- method InetAddress::get_family
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TInterface (Name {namespace = "Gio", name = "SocketFamily"}))
    -- throws : False
    -- Skip return : False

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

    {- |
    Gets /@address@/\'s family

    /Since: 2.22/
    -}
    inetAddressGetFamily ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Gio.Enums.SocketFamily
        {- ^ __Returns:__ /@address@/\'s family -}
    inetAddressGetFamily address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_family address'
        let result' = (toEnum . fromIntegral) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetFamilyMethodInfo
    instance (signature ~ (m Gio.Enums.SocketFamily), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetFamilyMethodInfo a signature where
        overloadedMethod _ = inetAddressGetFamily

    #endif

    -- method InetAddress::get_is_any
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is the \"any\" address for its family.

    /Since: 2.22/
    -}
    inetAddressGetIsAny ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is the \"any\" address for its family. -}
    inetAddressGetIsAny address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_any address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsAnyMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsAnyMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsAny

    #endif

    -- method InetAddress::get_is_link_local
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is a link-local address (that is, if it
    identifies a host on a local network that is not connected to the
    Internet).

    /Since: 2.22/
    -}
    inetAddressGetIsLinkLocal ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is a link-local address. -}
    inetAddressGetIsLinkLocal address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_link_local address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsLinkLocalMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsLinkLocalMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsLinkLocal

    #endif

    -- method InetAddress::get_is_loopback
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is the loopback address for its family.

    /Since: 2.22/
    -}
    inetAddressGetIsLoopback ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is the loopback address for its family. -}
    inetAddressGetIsLoopback address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_loopback address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsLoopbackMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsLoopbackMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsLoopback

    #endif

    -- method InetAddress::get_is_mc_global
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is a global multicast address.

    /Since: 2.22/
    -}
    inetAddressGetIsMcGlobal ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is a global multicast address. -}
    inetAddressGetIsMcGlobal address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_mc_global address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsMcGlobalMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsMcGlobalMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsMcGlobal

    #endif

    -- method InetAddress::get_is_mc_link_local
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is a link-local multicast address.

    /Since: 2.22/
    -}
    inetAddressGetIsMcLinkLocal ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is a link-local multicast address. -}
    inetAddressGetIsMcLinkLocal address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_mc_link_local address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsMcLinkLocalMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsMcLinkLocalMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsMcLinkLocal

    #endif

    -- method InetAddress::get_is_mc_node_local
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is a node-local multicast address.

    /Since: 2.22/
    -}
    inetAddressGetIsMcNodeLocal ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is a node-local multicast address. -}
    inetAddressGetIsMcNodeLocal address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_mc_node_local address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsMcNodeLocalMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsMcNodeLocalMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsMcNodeLocal

    #endif

    -- method InetAddress::get_is_mc_org_local
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is an organization-local multicast address.

    /Since: 2.22/
    -}
    inetAddressGetIsMcOrgLocal ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is an organization-local multicast address. -}
    inetAddressGetIsMcOrgLocal address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_mc_org_local address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsMcOrgLocalMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsMcOrgLocalMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsMcOrgLocal

    #endif

    -- method InetAddress::get_is_mc_site_local
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is a site-local multicast address.

    /Since: 2.22/
    -}
    inetAddressGetIsMcSiteLocal ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is a site-local multicast address. -}
    inetAddressGetIsMcSiteLocal address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_mc_site_local address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsMcSiteLocalMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsMcSiteLocalMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsMcSiteLocal

    #endif

    -- method InetAddress::get_is_multicast
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is a multicast address.

    /Since: 2.22/
    -}
    inetAddressGetIsMulticast ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is a multicast address. -}
    inetAddressGetIsMulticast address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_multicast address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsMulticastMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsMulticastMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsMulticast

    #endif

    -- method InetAddress::get_is_site_local
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

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

    {- |
    Tests whether /@address@/ is a site-local address such as 10.0.0.1
    (that is, the address identifies a host on a local network that can
    not be reached directly from the Internet, but which may have
    outgoing Internet connectivity via a NAT or firewall).

    /Since: 2.22/
    -}
    inetAddressGetIsSiteLocal ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Bool
        {- ^ __Returns:__ 'True' if /@address@/ is a site-local address. -}
    inetAddressGetIsSiteLocal address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_is_site_local address'
        let result' = (/= 0) result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressGetIsSiteLocalMethodInfo
    instance (signature ~ (m Bool), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetIsSiteLocalMethodInfo a signature where
        overloadedMethod _ = inetAddressGetIsSiteLocal

    #endif

    -- method InetAddress::get_native_size
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TUInt64)
    -- throws : False
    -- Skip return : False

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

    {- |
    Gets the size of the native raw binary address for /@address@/. This
    is the size of the data that you get from @/g_inet_address_to_bytes()/@.

    /Since: 2.22/
    -}
    inetAddressGetNativeSize ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m Word64
        {- ^ __Returns:__ the number of bytes used for the native version of /@address@/. -}
    inetAddressGetNativeSize address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_get_native_size address'
        touchManagedPtr address
        return result

    #if ENABLE_OVERLOADING
    data InetAddressGetNativeSizeMethodInfo
    instance (signature ~ (m Word64), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressGetNativeSizeMethodInfo a signature where
        overloadedMethod _ = inetAddressGetNativeSize

    #endif

    -- method InetAddress::to_string
    -- method type : OrdinaryMethod
    -- 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}]
    -- Lengths : []
    -- returnType : Just (TBasicType TUTF8)
    -- throws : False
    -- Skip return : False

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

    {- |
    Converts /@address@/ to string form.

    /Since: 2.22/
    -}
    inetAddressToString ::
        (B.CallStack.HasCallStack, MonadIO m, IsInetAddress a) =>
        a
        {- ^ /@address@/: a 'GI.Gio.Objects.InetAddress.InetAddress' -}
        -> m T.Text
        {- ^ __Returns:__ a representation of /@address@/ as a string, which should be
    freed after use. -}
    inetAddressToString address = liftIO $ do
        address' <- unsafeManagedPtrCastPtr address
        result <- g_inet_address_to_string address'
        checkUnexpectedReturnNULL "inetAddressToString" result
        result' <- cstringToText result
        freeMem result
        touchManagedPtr address
        return result'

    #if ENABLE_OVERLOADING
    data InetAddressToStringMethodInfo
    instance (signature ~ (m T.Text), MonadIO m, IsInetAddress a) => O.MethodInfo InetAddressToStringMethodInfo a signature where
        overloadedMethod _ = inetAddressToString

    #endif