gi-ggit-1.0.4: GI/Ggit/Objects/Object.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)
Represents a generic object in a repository.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Ggit.Objects.Object
(
-- * Exported types
Object(..) ,
IsObject ,
toObject ,
noObject ,
-- * Methods
-- ** getId #method:getId#
#if ENABLE_OVERLOADING
ObjectGetIdMethodInfo ,
#endif
objectGetId ,
-- ** getOwner #method:getOwner#
#if ENABLE_OVERLOADING
ObjectGetOwnerMethodInfo ,
#endif
objectGetOwner ,
) 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.Ggit.Objects.Native as Ggit.Native
import {-# SOURCE #-} qualified GI.Ggit.Objects.ObjectFactoryBase as Ggit.ObjectFactoryBase
import {-# SOURCE #-} qualified GI.Ggit.Objects.Repository as Ggit.Repository
import {-# SOURCE #-} qualified GI.Ggit.Structs.OId as Ggit.OId
-- | Memory-managed wrapper type.
newtype Object = Object (ManagedPtr Object)
foreign import ccall "ggit_object_get_type"
c_ggit_object_get_type :: IO GType
instance GObject Object where
gobjectType = c_ggit_object_get_type
-- | Type class for types which can be safely cast to `Object`, for instance with `toObject`.
class (GObject o, O.IsDescendantOf Object o) => IsObject o
instance (GObject o, O.IsDescendantOf Object o) => IsObject o
instance O.HasParentTypes Object
type instance O.ParentTypes Object = '[Ggit.Native.Native, Ggit.ObjectFactoryBase.ObjectFactoryBase, GObject.Object.Object]
-- | Cast to `Object`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toObject :: (MonadIO m, IsObject o) => o -> m Object
toObject = liftIO . unsafeCastTo Object
-- | A convenience alias for `Nothing` :: `Maybe` `Object`.
noObject :: Maybe Object
noObject = Nothing
#if ENABLE_OVERLOADING
type family ResolveObjectMethod (t :: Symbol) (o :: *) :: * where
ResolveObjectMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveObjectMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveObjectMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveObjectMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveObjectMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveObjectMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveObjectMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveObjectMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveObjectMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveObjectMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveObjectMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveObjectMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveObjectMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveObjectMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveObjectMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveObjectMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveObjectMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveObjectMethod "getId" o = ObjectGetIdMethodInfo
ResolveObjectMethod "getOwner" o = ObjectGetOwnerMethodInfo
ResolveObjectMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveObjectMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveObjectMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveObjectMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveObjectMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveObjectMethod t Object, O.MethodInfo info Object p) => OL.IsLabel t (Object -> 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
#if ENABLE_OVERLOADING
instance O.HasAttributeList Object
type instance O.AttributeList Object = ObjectAttributeList
type ObjectAttributeList = ('[ '("native", Ggit.Native.NativeNativePropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList Object = ObjectSignalList
type ObjectSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
-- method Object::get_id
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "object", argType = TInterface (Name {namespace = "Ggit", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitObject.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "OId"}))
-- throws : False
-- Skip return : False
foreign import ccall "ggit_object_get_id" ggit_object_get_id ::
Ptr Object -> -- object : TInterface (Name {namespace = "Ggit", name = "Object"})
IO (Ptr Ggit.OId.OId)
{- |
Gets the 'GI.Ggit.Structs.OId.OId' of /@object@/.
-}
objectGetId ::
(B.CallStack.HasCallStack, MonadIO m, IsObject a) =>
a
{- ^ /@object@/: a 'GI.Ggit.Objects.Object.Object'. -}
-> m (Maybe Ggit.OId.OId)
{- ^ __Returns:__ the 'GI.Ggit.Structs.OId.OId' of the object or 'Nothing'. -}
objectGetId object = liftIO $ do
object' <- unsafeManagedPtrCastPtr object
result <- ggit_object_get_id object'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapBoxed Ggit.OId.OId) result'
return result''
touchManagedPtr object
return maybeResult
#if ENABLE_OVERLOADING
data ObjectGetIdMethodInfo
instance (signature ~ (m (Maybe Ggit.OId.OId)), MonadIO m, IsObject a) => O.MethodInfo ObjectGetIdMethodInfo a signature where
overloadedMethod _ = objectGetId
#endif
-- method Object::get_owner
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "object", argType = TInterface (Name {namespace = "Ggit", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitObject.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Repository"}))
-- throws : False
-- Skip return : False
foreign import ccall "ggit_object_get_owner" ggit_object_get_owner ::
Ptr Object -> -- object : TInterface (Name {namespace = "Ggit", name = "Object"})
IO (Ptr Ggit.Repository.Repository)
{- |
Gets the 'GI.Ggit.Objects.Repository.Repository' that owns /@object@/.
-}
objectGetOwner ::
(B.CallStack.HasCallStack, MonadIO m, IsObject a) =>
a
{- ^ /@object@/: a 'GI.Ggit.Objects.Object.Object'. -}
-> m (Maybe Ggit.Repository.Repository)
{- ^ __Returns:__ the 'GI.Ggit.Objects.Repository.Repository' that owns this object or 'Nothing'.
The returned value must be free\'d calling 'GI.GObject.Objects.Object.objectUnref'. -}
objectGetOwner object = liftIO $ do
object' <- unsafeManagedPtrCastPtr object
result <- ggit_object_get_owner object'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapObject Ggit.Repository.Repository) result'
return result''
touchManagedPtr object
return maybeResult
#if ENABLE_OVERLOADING
data ObjectGetOwnerMethodInfo
instance (signature ~ (m (Maybe Ggit.Repository.Repository)), MonadIO m, IsObject a) => O.MethodInfo ObjectGetOwnerMethodInfo a signature where
overloadedMethod _ = objectGetOwner
#endif