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

'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 (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !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.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL

import 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, O.IsDescendantOf InetAddress o) => IsInetAddress o
instance (GObject o, O.IsDescendantOf InetAddress o) => IsInetAddress o

instance O.HasParentTypes InetAddress
type instance O.ParentTypes InetAddress = '[GObject.Object.Object]

-- | 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 "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveInetAddressMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveInetAddressMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveInetAddressMethod t InetAddress, O.MethodInfo info InetAddress p) => OL.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

-- 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 $ B.Properties.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 = B.Properties.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 $ B.Properties.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 = B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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 $ B.Properties.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