{- | 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.MenuAttributeIter.MenuAttributeIter' is an opaque structure type. You must access it using the functions below. /Since: 2.32/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Objects.MenuAttributeIter ( -- * Exported types MenuAttributeIter(..) , IsMenuAttributeIter , toMenuAttributeIter , noMenuAttributeIter , -- * Methods -- ** getName #method:getName# #if ENABLE_OVERLOADING MenuAttributeIterGetNameMethodInfo , #endif menuAttributeIterGetName , -- ** getNext #method:getNext# #if ENABLE_OVERLOADING MenuAttributeIterGetNextMethodInfo , #endif menuAttributeIterGetNext , -- ** getValue #method:getValue# #if ENABLE_OVERLOADING MenuAttributeIterGetValueMethodInfo , #endif menuAttributeIterGetValue , -- ** next #method:next# #if ENABLE_OVERLOADING MenuAttributeIterNextMethodInfo , #endif menuAttributeIterNext , ) 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 -- | Memory-managed wrapper type. newtype MenuAttributeIter = MenuAttributeIter (ManagedPtr MenuAttributeIter) foreign import ccall "g_menu_attribute_iter_get_type" c_g_menu_attribute_iter_get_type :: IO GType instance GObject MenuAttributeIter where gobjectType = c_g_menu_attribute_iter_get_type -- | Type class for types which can be safely cast to `MenuAttributeIter`, for instance with `toMenuAttributeIter`. class (GObject o, O.IsDescendantOf MenuAttributeIter o) => IsMenuAttributeIter o instance (GObject o, O.IsDescendantOf MenuAttributeIter o) => IsMenuAttributeIter o instance O.HasParentTypes MenuAttributeIter type instance O.ParentTypes MenuAttributeIter = '[GObject.Object.Object] -- | Cast to `MenuAttributeIter`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toMenuAttributeIter :: (MonadIO m, IsMenuAttributeIter o) => o -> m MenuAttributeIter toMenuAttributeIter = liftIO . unsafeCastTo MenuAttributeIter -- | A convenience alias for `Nothing` :: `Maybe` `MenuAttributeIter`. noMenuAttributeIter :: Maybe MenuAttributeIter noMenuAttributeIter = Nothing #if ENABLE_OVERLOADING type family ResolveMenuAttributeIterMethod (t :: Symbol) (o :: *) :: * where ResolveMenuAttributeIterMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveMenuAttributeIterMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveMenuAttributeIterMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveMenuAttributeIterMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveMenuAttributeIterMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveMenuAttributeIterMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveMenuAttributeIterMethod "next" o = MenuAttributeIterNextMethodInfo ResolveMenuAttributeIterMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveMenuAttributeIterMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveMenuAttributeIterMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveMenuAttributeIterMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveMenuAttributeIterMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveMenuAttributeIterMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveMenuAttributeIterMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveMenuAttributeIterMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveMenuAttributeIterMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveMenuAttributeIterMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveMenuAttributeIterMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveMenuAttributeIterMethod "getName" o = MenuAttributeIterGetNameMethodInfo ResolveMenuAttributeIterMethod "getNext" o = MenuAttributeIterGetNextMethodInfo ResolveMenuAttributeIterMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveMenuAttributeIterMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveMenuAttributeIterMethod "getValue" o = MenuAttributeIterGetValueMethodInfo ResolveMenuAttributeIterMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveMenuAttributeIterMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveMenuAttributeIterMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveMenuAttributeIterMethod t MenuAttributeIter, O.MethodInfo info MenuAttributeIter p) => OL.IsLabel t (MenuAttributeIter -> 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 MenuAttributeIter type instance O.AttributeList MenuAttributeIter = MenuAttributeIterAttributeList type MenuAttributeIterAttributeList = ('[ ] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type instance O.SignalList MenuAttributeIter = MenuAttributeIterSignalList type MenuAttributeIterSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif -- method MenuAttributeIter::get_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GMenuAttributeIter", 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_menu_attribute_iter_get_name" g_menu_attribute_iter_get_name :: Ptr MenuAttributeIter -> -- iter : TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}) IO CString {- | Gets the name of the attribute at the current iterator position, as a string. The iterator is not advanced. /Since: 2.32/ -} menuAttributeIterGetName :: (B.CallStack.HasCallStack, MonadIO m, IsMenuAttributeIter a) => a {- ^ /@iter@/: a 'GI.Gio.Objects.MenuAttributeIter.MenuAttributeIter' -} -> m T.Text {- ^ __Returns:__ the name of the attribute -} menuAttributeIterGetName iter = liftIO $ do iter' <- unsafeManagedPtrCastPtr iter result <- g_menu_attribute_iter_get_name iter' checkUnexpectedReturnNULL "menuAttributeIterGetName" result result' <- cstringToText result touchManagedPtr iter return result' #if ENABLE_OVERLOADING data MenuAttributeIterGetNameMethodInfo instance (signature ~ (m T.Text), MonadIO m, IsMenuAttributeIter a) => O.MethodInfo MenuAttributeIterGetNameMethodInfo a signature where overloadedMethod _ = menuAttributeIterGetName #endif -- method MenuAttributeIter::get_next -- method type : OrdinaryMethod -- Args : [Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GMenuAttributeIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "out_name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the type of the attribute", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TVariant, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the attribute value", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "g_menu_attribute_iter_get_next" g_menu_attribute_iter_get_next :: Ptr MenuAttributeIter -> -- iter : TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}) Ptr CString -> -- out_name : TBasicType TUTF8 Ptr (Ptr GVariant) -> -- value : TVariant IO CInt {- | This function combines 'GI.Gio.Objects.MenuAttributeIter.menuAttributeIterNext' with 'GI.Gio.Objects.MenuAttributeIter.menuAttributeIterGetName' and 'GI.Gio.Objects.MenuAttributeIter.menuAttributeIterGetValue'. First the iterator is advanced to the next (possibly first) attribute. If that fails, then 'False' is returned and there are no other effects. If successful, /@name@/ and /@value@/ are set to the name and value of the attribute that has just been advanced to. At this point, 'GI.Gio.Objects.MenuAttributeIter.menuAttributeIterGetName' and 'GI.Gio.Objects.MenuAttributeIter.menuAttributeIterGetValue' will return the same values again. The value returned in /@name@/ remains valid for as long as the iterator remains at the current position. The value returned in /@value@/ must be unreffed using 'GI.GLib.Structs.Variant.variantUnref' when it is no longer in use. /Since: 2.32/ -} menuAttributeIterGetNext :: (B.CallStack.HasCallStack, MonadIO m, IsMenuAttributeIter a) => a {- ^ /@iter@/: a 'GI.Gio.Objects.MenuAttributeIter.MenuAttributeIter' -} -> m ((Bool, T.Text, GVariant)) {- ^ __Returns:__ 'True' on success, or 'False' if there is no additional attribute -} menuAttributeIterGetNext iter = liftIO $ do iter' <- unsafeManagedPtrCastPtr iter outName <- allocMem :: IO (Ptr CString) value <- allocMem :: IO (Ptr (Ptr GVariant)) result <- g_menu_attribute_iter_get_next iter' outName value let result' = (/= 0) result outName' <- peek outName outName'' <- cstringToText outName' value' <- peek value value'' <- B.GVariant.wrapGVariantPtr value' touchManagedPtr iter freeMem outName freeMem value return (result', outName'', value'') #if ENABLE_OVERLOADING data MenuAttributeIterGetNextMethodInfo instance (signature ~ (m ((Bool, T.Text, GVariant))), MonadIO m, IsMenuAttributeIter a) => O.MethodInfo MenuAttributeIterGetNextMethodInfo a signature where overloadedMethod _ = menuAttributeIterGetNext #endif -- method MenuAttributeIter::get_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GMenuAttributeIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just TVariant -- throws : False -- Skip return : False foreign import ccall "g_menu_attribute_iter_get_value" g_menu_attribute_iter_get_value :: Ptr MenuAttributeIter -> -- iter : TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}) IO (Ptr GVariant) {- | Gets the value of the attribute at the current iterator position. The iterator is not advanced. /Since: 2.32/ -} menuAttributeIterGetValue :: (B.CallStack.HasCallStack, MonadIO m, IsMenuAttributeIter a) => a {- ^ /@iter@/: a 'GI.Gio.Objects.MenuAttributeIter.MenuAttributeIter' -} -> m GVariant {- ^ __Returns:__ the value of the current attribute -} menuAttributeIterGetValue iter = liftIO $ do iter' <- unsafeManagedPtrCastPtr iter result <- g_menu_attribute_iter_get_value iter' checkUnexpectedReturnNULL "menuAttributeIterGetValue" result result' <- B.GVariant.wrapGVariantPtr result touchManagedPtr iter return result' #if ENABLE_OVERLOADING data MenuAttributeIterGetValueMethodInfo instance (signature ~ (m GVariant), MonadIO m, IsMenuAttributeIter a) => O.MethodInfo MenuAttributeIterGetValueMethodInfo a signature where overloadedMethod _ = menuAttributeIterGetValue #endif -- method MenuAttributeIter::next -- method type : OrdinaryMethod -- Args : [Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GMenuAttributeIter", 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_menu_attribute_iter_next" g_menu_attribute_iter_next :: Ptr MenuAttributeIter -> -- iter : TInterface (Name {namespace = "Gio", name = "MenuAttributeIter"}) IO CInt {- | Attempts to advance the iterator to the next (possibly first) attribute. 'True' is returned on success, or 'False' if there are no more attributes. You must call this function when you first acquire the iterator to advance it to the first attribute (and determine if the first attribute exists at all). /Since: 2.32/ -} menuAttributeIterNext :: (B.CallStack.HasCallStack, MonadIO m, IsMenuAttributeIter a) => a {- ^ /@iter@/: a 'GI.Gio.Objects.MenuAttributeIter.MenuAttributeIter' -} -> m Bool {- ^ __Returns:__ 'True' on success, or 'False' when there are no more attributes -} menuAttributeIterNext iter = liftIO $ do iter' <- unsafeManagedPtrCastPtr iter result <- g_menu_attribute_iter_next iter' let result' = (/= 0) result touchManagedPtr iter return result' #if ENABLE_OVERLOADING data MenuAttributeIterNextMethodInfo instance (signature ~ (m Bool), MonadIO m, IsMenuAttributeIter a) => O.MethodInfo MenuAttributeIterNextMethodInfo a signature where overloadedMethod _ = menuAttributeIterNext #endif