gi-atk-2.0.17: GI/Atk/Structs/Range.hs
{- |
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.Atk.Structs.Range.Range' are used on 'GI.Atk.Interfaces.Value.Value', in order to represent the full
range of a given component (for example an slider or a range
control), or to define each individual subrange this full range is
splitted if available. See 'GI.Atk.Interfaces.Value.Value' documentation for further
details.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Atk.Structs.Range
(
-- * Exported types
Range(..) ,
noRange ,
-- * Methods
-- ** copy #method:copy#
#if ENABLE_OVERLOADING
RangeCopyMethodInfo ,
#endif
rangeCopy ,
-- ** free #method:free#
#if ENABLE_OVERLOADING
RangeFreeMethodInfo ,
#endif
rangeFree ,
-- ** getDescription #method:getDescription#
#if ENABLE_OVERLOADING
RangeGetDescriptionMethodInfo ,
#endif
rangeGetDescription ,
-- ** getLowerLimit #method:getLowerLimit#
#if ENABLE_OVERLOADING
RangeGetLowerLimitMethodInfo ,
#endif
rangeGetLowerLimit ,
-- ** getUpperLimit #method:getUpperLimit#
#if ENABLE_OVERLOADING
RangeGetUpperLimitMethodInfo ,
#endif
rangeGetUpperLimit ,
-- ** new #method:new#
rangeNew ,
) 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
-- | Memory-managed wrapper type.
newtype Range = Range (ManagedPtr Range)
foreign import ccall "atk_range_get_type" c_atk_range_get_type ::
IO GType
instance BoxedObject Range where
boxedType _ = c_atk_range_get_type
-- | A convenience alias for `Nothing` :: `Maybe` `Range`.
noRange :: Maybe Range
noRange = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList Range
type instance O.AttributeList Range = RangeAttributeList
type RangeAttributeList = ('[ ] :: [(Symbol, *)])
#endif
-- method Range::new
-- method type : Constructor
-- Args : [Arg {argCName = "lower_limit", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "inferior limit for this range", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "upper_limit", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "superior limit for this range", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "description", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "human readable description of this range.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Atk", name = "Range"}))
-- throws : False
-- Skip return : False
foreign import ccall "atk_range_new" atk_range_new ::
CDouble -> -- lower_limit : TBasicType TDouble
CDouble -> -- upper_limit : TBasicType TDouble
CString -> -- description : TBasicType TUTF8
IO (Ptr Range)
{- |
Creates a new 'GI.Atk.Structs.Range.Range'.
/Since: 2.12/
-}
rangeNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
Double
{- ^ /@lowerLimit@/: inferior limit for this range -}
-> Double
{- ^ /@upperLimit@/: superior limit for this range -}
-> T.Text
{- ^ /@description@/: human readable description of this range. -}
-> m Range
{- ^ __Returns:__ a new 'GI.Atk.Structs.Range.Range' -}
rangeNew lowerLimit upperLimit description = liftIO $ do
let lowerLimit' = realToFrac lowerLimit
let upperLimit' = realToFrac upperLimit
description' <- textToCString description
result <- atk_range_new lowerLimit' upperLimit' description'
checkUnexpectedReturnNULL "rangeNew" result
result' <- (wrapBoxed Range) result
freeMem description'
return result'
#if ENABLE_OVERLOADING
#endif
-- method Range::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Atk", name = "Range"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#AtkRange to copy", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Atk", name = "Range"}))
-- throws : False
-- Skip return : False
foreign import ccall "atk_range_copy" atk_range_copy ::
Ptr Range -> -- src : TInterface (Name {namespace = "Atk", name = "Range"})
IO (Ptr Range)
{- |
Returns a new 'GI.Atk.Structs.Range.Range' that is a exact copy of /@src@/
/Since: 2.12/
-}
rangeCopy ::
(B.CallStack.HasCallStack, MonadIO m) =>
Range
{- ^ /@src@/: 'GI.Atk.Structs.Range.Range' to copy -}
-> m Range
{- ^ __Returns:__ a new 'GI.Atk.Structs.Range.Range' copy of /@src@/ -}
rangeCopy src = liftIO $ do
src' <- unsafeManagedPtrGetPtr src
result <- atk_range_copy src'
checkUnexpectedReturnNULL "rangeCopy" result
result' <- (wrapBoxed Range) result
touchManagedPtr src
return result'
#if ENABLE_OVERLOADING
data RangeCopyMethodInfo
instance (signature ~ (m Range), MonadIO m) => O.MethodInfo RangeCopyMethodInfo Range signature where
overloadedMethod _ = rangeCopy
#endif
-- method Range::free
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "range", argType = TInterface (Name {namespace = "Atk", name = "Range"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#AtkRange to free", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "atk_range_free" atk_range_free ::
Ptr Range -> -- range : TInterface (Name {namespace = "Atk", name = "Range"})
IO ()
{- |
Free /@range@/
/Since: 2.12/
-}
rangeFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
Range
{- ^ /@range@/: 'GI.Atk.Structs.Range.Range' to free -}
-> m ()
rangeFree range = liftIO $ do
range' <- unsafeManagedPtrGetPtr range
atk_range_free range'
touchManagedPtr range
return ()
#if ENABLE_OVERLOADING
data RangeFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo RangeFreeMethodInfo Range signature where
overloadedMethod _ = rangeFree
#endif
-- method Range::get_description
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "range", argType = TInterface (Name {namespace = "Atk", name = "Range"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an #AtkRange", 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 "atk_range_get_description" atk_range_get_description ::
Ptr Range -> -- range : TInterface (Name {namespace = "Atk", name = "Range"})
IO CString
{- |
Returns the human readable description of /@range@/
/Since: 2.12/
-}
rangeGetDescription ::
(B.CallStack.HasCallStack, MonadIO m) =>
Range
{- ^ /@range@/: an 'GI.Atk.Structs.Range.Range' -}
-> m T.Text
{- ^ __Returns:__ the human-readable description of /@range@/ -}
rangeGetDescription range = liftIO $ do
range' <- unsafeManagedPtrGetPtr range
result <- atk_range_get_description range'
checkUnexpectedReturnNULL "rangeGetDescription" result
result' <- cstringToText result
touchManagedPtr range
return result'
#if ENABLE_OVERLOADING
data RangeGetDescriptionMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo RangeGetDescriptionMethodInfo Range signature where
overloadedMethod _ = rangeGetDescription
#endif
-- method Range::get_lower_limit
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "range", argType = TInterface (Name {namespace = "Atk", name = "Range"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an #AtkRange", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TDouble)
-- throws : False
-- Skip return : False
foreign import ccall "atk_range_get_lower_limit" atk_range_get_lower_limit ::
Ptr Range -> -- range : TInterface (Name {namespace = "Atk", name = "Range"})
IO CDouble
{- |
Returns the lower limit of /@range@/
/Since: 2.12/
-}
rangeGetLowerLimit ::
(B.CallStack.HasCallStack, MonadIO m) =>
Range
{- ^ /@range@/: an 'GI.Atk.Structs.Range.Range' -}
-> m Double
{- ^ __Returns:__ the lower limit of /@range@/ -}
rangeGetLowerLimit range = liftIO $ do
range' <- unsafeManagedPtrGetPtr range
result <- atk_range_get_lower_limit range'
let result' = realToFrac result
touchManagedPtr range
return result'
#if ENABLE_OVERLOADING
data RangeGetLowerLimitMethodInfo
instance (signature ~ (m Double), MonadIO m) => O.MethodInfo RangeGetLowerLimitMethodInfo Range signature where
overloadedMethod _ = rangeGetLowerLimit
#endif
-- method Range::get_upper_limit
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "range", argType = TInterface (Name {namespace = "Atk", name = "Range"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an #AtkRange", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TDouble)
-- throws : False
-- Skip return : False
foreign import ccall "atk_range_get_upper_limit" atk_range_get_upper_limit ::
Ptr Range -> -- range : TInterface (Name {namespace = "Atk", name = "Range"})
IO CDouble
{- |
Returns the upper limit of /@range@/
/Since: 2.12/
-}
rangeGetUpperLimit ::
(B.CallStack.HasCallStack, MonadIO m) =>
Range
{- ^ /@range@/: an 'GI.Atk.Structs.Range.Range' -}
-> m Double
{- ^ __Returns:__ the upper limit of /@range@/ -}
rangeGetUpperLimit range = liftIO $ do
range' <- unsafeManagedPtrGetPtr range
result <- atk_range_get_upper_limit range'
let result' = realToFrac result
touchManagedPtr range
return result'
#if ENABLE_OVERLOADING
data RangeGetUpperLimitMethodInfo
instance (signature ~ (m Double), MonadIO m) => O.MethodInfo RangeGetUpperLimitMethodInfo Range signature where
overloadedMethod _ = rangeGetUpperLimit
#endif
#if ENABLE_OVERLOADING
type family ResolveRangeMethod (t :: Symbol) (o :: *) :: * where
ResolveRangeMethod "copy" o = RangeCopyMethodInfo
ResolveRangeMethod "free" o = RangeFreeMethodInfo
ResolveRangeMethod "getDescription" o = RangeGetDescriptionMethodInfo
ResolveRangeMethod "getLowerLimit" o = RangeGetLowerLimitMethodInfo
ResolveRangeMethod "getUpperLimit" o = RangeGetUpperLimitMethodInfo
ResolveRangeMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveRangeMethod t Range, O.MethodInfo info Range p) => OL.IsLabel t (Range -> 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