{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) /No description available in the introspection data./ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Vte.Objects.Pty ( #if ENABLE_OVERLOADING PtySpawnAsyncMethodInfo , #endif -- * Exported types Pty(..) , IsPty , toPty , noPty , -- * Methods -- ** childSetup #method:childSetup# #if ENABLE_OVERLOADING PtyChildSetupMethodInfo , #endif ptyChildSetup , -- ** close #method:close# #if ENABLE_OVERLOADING PtyCloseMethodInfo , #endif ptyClose , -- ** getFd #method:getFd# #if ENABLE_OVERLOADING PtyGetFdMethodInfo , #endif ptyGetFd , -- ** getSize #method:getSize# #if ENABLE_OVERLOADING PtyGetSizeMethodInfo , #endif ptyGetSize , -- ** newForeignSync #method:newForeignSync# ptyNewForeignSync , -- ** newSync #method:newSync# ptyNewSync , -- ** setSize #method:setSize# #if ENABLE_OVERLOADING PtySetSizeMethodInfo , #endif ptySetSize , -- ** setUtf8 #method:setUtf8# #if ENABLE_OVERLOADING PtySetUtf8MethodInfo , #endif ptySetUtf8 , -- ** spawnFinish #method:spawnFinish# #if ENABLE_OVERLOADING PtySpawnFinishMethodInfo , #endif ptySpawnFinish , -- * Properties -- ** fd #attr:fd# {- | The file descriptor of the PTY master. -} #if ENABLE_OVERLOADING PtyFdPropertyInfo , #endif constructPtyFd , getPtyFd , #if ENABLE_OVERLOADING ptyFd , #endif -- ** flags #attr:flags# {- | Flags. -} #if ENABLE_OVERLOADING PtyFlagsPropertyInfo , #endif constructPtyFlags , getPtyFlags , #if ENABLE_OVERLOADING ptyFlags , #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 qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult import qualified GI.Gio.Interfaces.Initable as Gio.Initable import qualified GI.Gio.Objects.Cancellable as Gio.Cancellable import {-# SOURCE #-} qualified GI.Vte.Flags as Vte.Flags -- | Memory-managed wrapper type. newtype Pty = Pty (ManagedPtr Pty) foreign import ccall "vte_pty_get_type" c_vte_pty_get_type :: IO GType instance GObject Pty where gobjectType = c_vte_pty_get_type -- | Type class for types which can be safely cast to `Pty`, for instance with `toPty`. class (GObject o, O.IsDescendantOf Pty o) => IsPty o instance (GObject o, O.IsDescendantOf Pty o) => IsPty o instance O.HasParentTypes Pty type instance O.ParentTypes Pty = '[GObject.Object.Object, Gio.Initable.Initable] -- | Cast to `Pty`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toPty :: (MonadIO m, IsPty o) => o -> m Pty toPty = liftIO . unsafeCastTo Pty -- | A convenience alias for `Nothing` :: `Maybe` `Pty`. noPty :: Maybe Pty noPty = Nothing #if ENABLE_OVERLOADING type family ResolvePtyMethod (t :: Symbol) (o :: *) :: * where ResolvePtyMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolvePtyMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolvePtyMethod "childSetup" o = PtyChildSetupMethodInfo ResolvePtyMethod "close" o = PtyCloseMethodInfo ResolvePtyMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolvePtyMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolvePtyMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolvePtyMethod "init" o = Gio.Initable.InitableInitMethodInfo ResolvePtyMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolvePtyMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolvePtyMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolvePtyMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolvePtyMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolvePtyMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolvePtyMethod "spawnAsync" o = PtySpawnAsyncMethodInfo ResolvePtyMethod "spawnFinish" o = PtySpawnFinishMethodInfo ResolvePtyMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolvePtyMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolvePtyMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolvePtyMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolvePtyMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolvePtyMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolvePtyMethod "getFd" o = PtyGetFdMethodInfo ResolvePtyMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolvePtyMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolvePtyMethod "getSize" o = PtyGetSizeMethodInfo ResolvePtyMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolvePtyMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolvePtyMethod "setSize" o = PtySetSizeMethodInfo ResolvePtyMethod "setUtf8" o = PtySetUtf8MethodInfo ResolvePtyMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolvePtyMethod t Pty, O.MethodInfo info Pty p) => OL.IsLabel t (Pty -> 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 "fd" -- Type: TBasicType TInt -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly] -- Nullable: (Just False,Nothing) {- | Get the value of the “@fd@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' pty #fd @ -} getPtyFd :: (MonadIO m, IsPty o) => o -> m Int32 getPtyFd obj = liftIO $ B.Properties.getObjectPropertyInt32 obj "fd" {- | Construct a `GValueConstruct` with valid value for the “@fd@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructPtyFd :: (IsPty o) => Int32 -> IO (GValueConstruct o) constructPtyFd val = B.Properties.constructObjectPropertyInt32 "fd" val #if ENABLE_OVERLOADING data PtyFdPropertyInfo instance AttrInfo PtyFdPropertyInfo where type AttrAllowedOps PtyFdPropertyInfo = '[ 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint PtyFdPropertyInfo = (~) Int32 type AttrBaseTypeConstraint PtyFdPropertyInfo = IsPty type AttrGetType PtyFdPropertyInfo = Int32 type AttrLabel PtyFdPropertyInfo = "fd" type AttrOrigin PtyFdPropertyInfo = Pty attrGet _ = getPtyFd attrSet _ = undefined attrConstruct _ = constructPtyFd attrClear _ = undefined #endif -- VVV Prop "flags" -- Type: TInterface (Name {namespace = "Vte", name = "PtyFlags"}) -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@flags@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' pty #flags @ -} getPtyFlags :: (MonadIO m, IsPty o) => o -> m [Vte.Flags.PtyFlags] getPtyFlags obj = liftIO $ B.Properties.getObjectPropertyFlags obj "flags" {- | Construct a `GValueConstruct` with valid value for the “@flags@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructPtyFlags :: (IsPty o) => [Vte.Flags.PtyFlags] -> IO (GValueConstruct o) constructPtyFlags val = B.Properties.constructObjectPropertyFlags "flags" val #if ENABLE_OVERLOADING data PtyFlagsPropertyInfo instance AttrInfo PtyFlagsPropertyInfo where type AttrAllowedOps PtyFlagsPropertyInfo = '[ 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint PtyFlagsPropertyInfo = (~) [Vte.Flags.PtyFlags] type AttrBaseTypeConstraint PtyFlagsPropertyInfo = IsPty type AttrGetType PtyFlagsPropertyInfo = [Vte.Flags.PtyFlags] type AttrLabel PtyFlagsPropertyInfo = "flags" type AttrOrigin PtyFlagsPropertyInfo = Pty attrGet _ = getPtyFlags attrSet _ = undefined attrConstruct _ = constructPtyFlags attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList Pty type instance O.AttributeList Pty = PtyAttributeList type PtyAttributeList = ('[ '("fd", PtyFdPropertyInfo), '("flags", PtyFlagsPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING ptyFd :: AttrLabelProxy "fd" ptyFd = AttrLabelProxy ptyFlags :: AttrLabelProxy "flags" ptyFlags = AttrLabelProxy #endif #if ENABLE_OVERLOADING type instance O.SignalList Pty = PtySignalList type PtySignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif -- method Pty::new_foreign_sync -- method type : Constructor -- Args : [Arg {argCName = "fd", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor to the PTY", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GCancellable, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Vte", name = "Pty"})) -- throws : True -- Skip return : False foreign import ccall "vte_pty_new_foreign_sync" vte_pty_new_foreign_sync :: Int32 -> -- fd : TBasicType TInt Ptr Gio.Cancellable.Cancellable -> -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"}) Ptr (Ptr GError) -> -- error IO (Ptr Pty) {- | Creates a new 'GI.Vte.Objects.Pty.Pty' for the PTY master /@fd@/. No entry will be made in the lastlog, utmp or wtmp system files. Note that the newly created 'GI.Vte.Objects.Pty.Pty' will take ownership of /@fd@/ and close it on finalize. -} ptyNewForeignSync :: (B.CallStack.HasCallStack, MonadIO m, Gio.Cancellable.IsCancellable a) => Int32 {- ^ /@fd@/: a file descriptor to the PTY -} -> Maybe (a) {- ^ /@cancellable@/: a 'GI.Gio.Objects.Cancellable.Cancellable', or 'Nothing' -} -> m Pty {- ^ __Returns:__ a new 'GI.Vte.Objects.Pty.Pty' for /@fd@/, or 'Nothing' on error with /@error@/ filled in /(Can throw 'Data.GI.Base.GError.GError')/ -} ptyNewForeignSync fd cancellable = liftIO $ do maybeCancellable <- case cancellable of Nothing -> return nullPtr Just jCancellable -> do jCancellable' <- unsafeManagedPtrCastPtr jCancellable return jCancellable' onException (do result <- propagateGError $ vte_pty_new_foreign_sync fd maybeCancellable checkUnexpectedReturnNULL "ptyNewForeignSync" result result' <- (wrapObject Pty) result whenJust cancellable touchManagedPtr return result' ) (do return () ) #if ENABLE_OVERLOADING #endif -- method Pty::new_sync -- method type : Constructor -- Args : [Arg {argCName = "flags", argType = TInterface (Name {namespace = "Vte", name = "PtyFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "flags from #VtePtyFlags", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GCancellable, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Vte", name = "Pty"})) -- throws : True -- Skip return : False foreign import ccall "vte_pty_new_sync" vte_pty_new_sync :: CUInt -> -- flags : TInterface (Name {namespace = "Vte", name = "PtyFlags"}) Ptr Gio.Cancellable.Cancellable -> -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"}) Ptr (Ptr GError) -> -- error IO (Ptr Pty) {- | Allocates a new pseudo-terminal. You can later use @/fork()/@ or the 'GI.GLib.Functions.spawnAsync' family of functions to start a process on the PTY. If using @/fork()/@, you MUST call 'GI.Vte.Objects.Pty.ptyChildSetup' in the child. If using 'GI.GLib.Functions.spawnAsync' and friends, you MUST either use 'GI.Vte.Objects.Pty.ptyChildSetup' directly as the child setup function, or call 'GI.Vte.Objects.Pty.ptyChildSetup' from your own child setup function supplied. When using 'GI.Vte.Objects.Terminal.terminalSpawnSync' with a custom child setup function, 'GI.Vte.Objects.Pty.ptyChildSetup' will be called before the supplied function; you must not call it again. Also, you MUST pass the 'GI.GLib.Flags.SpawnFlagsDoNotReapChild' flag. -} ptyNewSync :: (B.CallStack.HasCallStack, MonadIO m, Gio.Cancellable.IsCancellable a) => [Vte.Flags.PtyFlags] {- ^ /@flags@/: flags from 'GI.Vte.Flags.PtyFlags' -} -> Maybe (a) {- ^ /@cancellable@/: a 'GI.Gio.Objects.Cancellable.Cancellable', or 'Nothing' -} -> m Pty {- ^ __Returns:__ a new 'GI.Vte.Objects.Pty.Pty', or 'Nothing' on error with /@error@/ filled in /(Can throw 'Data.GI.Base.GError.GError')/ -} ptyNewSync flags cancellable = liftIO $ do let flags' = gflagsToWord flags maybeCancellable <- case cancellable of Nothing -> return nullPtr Just jCancellable -> do jCancellable' <- unsafeManagedPtrCastPtr jCancellable return jCancellable' onException (do result <- propagateGError $ vte_pty_new_sync flags' maybeCancellable checkUnexpectedReturnNULL "ptyNewSync" result result' <- (wrapObject Pty) result whenJust cancellable touchManagedPtr return result' ) (do return () ) #if ENABLE_OVERLOADING #endif -- method Pty::child_setup -- method type : OrdinaryMethod -- Args : [Arg {argCName = "pty", argType = TInterface (Name {namespace = "Vte", name = "Pty"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #VtePty", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "vte_pty_child_setup" vte_pty_child_setup :: Ptr Pty -> -- pty : TInterface (Name {namespace = "Vte", name = "Pty"}) IO () {- | FIXMEchpe -} ptyChildSetup :: (B.CallStack.HasCallStack, MonadIO m, IsPty a) => a {- ^ /@pty@/: a 'GI.Vte.Objects.Pty.Pty' -} -> m () ptyChildSetup pty = liftIO $ do pty' <- unsafeManagedPtrCastPtr pty vte_pty_child_setup pty' touchManagedPtr pty return () #if ENABLE_OVERLOADING data PtyChildSetupMethodInfo instance (signature ~ (m ()), MonadIO m, IsPty a) => O.MethodInfo PtyChildSetupMethodInfo a signature where overloadedMethod _ = ptyChildSetup #endif -- method Pty::close -- method type : OrdinaryMethod -- Args : [Arg {argCName = "pty", argType = TInterface (Name {namespace = "Vte", name = "Pty"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #VtePty", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "vte_pty_close" vte_pty_close :: Ptr Pty -> -- pty : TInterface (Name {namespace = "Vte", name = "Pty"}) IO () {-# DEPRECATED ptyClose ["(Since version 0.42)"] #-} {- | Since 0.42 this is a no-op. -} ptyClose :: (B.CallStack.HasCallStack, MonadIO m, IsPty a) => a {- ^ /@pty@/: a 'GI.Vte.Objects.Pty.Pty' -} -> m () ptyClose pty = liftIO $ do pty' <- unsafeManagedPtrCastPtr pty vte_pty_close pty' touchManagedPtr pty return () #if ENABLE_OVERLOADING data PtyCloseMethodInfo instance (signature ~ (m ()), MonadIO m, IsPty a) => O.MethodInfo PtyCloseMethodInfo a signature where overloadedMethod _ = ptyClose #endif -- method Pty::get_fd -- method type : OrdinaryMethod -- Args : [Arg {argCName = "pty", argType = TInterface (Name {namespace = "Vte", name = "Pty"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #VtePty", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TInt) -- throws : False -- Skip return : False foreign import ccall "vte_pty_get_fd" vte_pty_get_fd :: Ptr Pty -> -- pty : TInterface (Name {namespace = "Vte", name = "Pty"}) IO Int32 {- | /No description available in the introspection data./ -} ptyGetFd :: (B.CallStack.HasCallStack, MonadIO m, IsPty a) => a {- ^ /@pty@/: a 'GI.Vte.Objects.Pty.Pty' -} -> m Int32 {- ^ __Returns:__ the file descriptor of the PTY master in /@pty@/. The file descriptor belongs to /@pty@/ and must not be closed -} ptyGetFd pty = liftIO $ do pty' <- unsafeManagedPtrCastPtr pty result <- vte_pty_get_fd pty' touchManagedPtr pty return result #if ENABLE_OVERLOADING data PtyGetFdMethodInfo instance (signature ~ (m Int32), MonadIO m, IsPty a) => O.MethodInfo PtyGetFdMethodInfo a signature where overloadedMethod _ = ptyGetFd #endif -- method Pty::get_size -- method type : OrdinaryMethod -- Args : [Arg {argCName = "pty", argType = TInterface (Name {namespace = "Vte", name = "Pty"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #VtePty", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rows", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a location to store the number of rows, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "columns", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a location to store the number of columns, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : True -- Skip return : False foreign import ccall "vte_pty_get_size" vte_pty_get_size :: Ptr Pty -> -- pty : TInterface (Name {namespace = "Vte", name = "Pty"}) Ptr Int32 -> -- rows : TBasicType TInt Ptr Int32 -> -- columns : TBasicType TInt Ptr (Ptr GError) -> -- error IO CInt {- | Reads the pseudo terminal\'s window size. If getting the window size failed, /@error@/ will be set to a 'GI.GLib.Enums.IOError'. -} ptyGetSize :: (B.CallStack.HasCallStack, MonadIO m, IsPty a) => a {- ^ /@pty@/: a 'GI.Vte.Objects.Pty.Pty' -} -> m ((Int32, Int32)) {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -} ptyGetSize pty = liftIO $ do pty' <- unsafeManagedPtrCastPtr pty rows <- allocMem :: IO (Ptr Int32) columns <- allocMem :: IO (Ptr Int32) onException (do _ <- propagateGError $ vte_pty_get_size pty' rows columns rows' <- peek rows columns' <- peek columns touchManagedPtr pty freeMem rows freeMem columns return (rows', columns') ) (do freeMem rows freeMem columns ) #if ENABLE_OVERLOADING data PtyGetSizeMethodInfo instance (signature ~ (m ((Int32, Int32))), MonadIO m, IsPty a) => O.MethodInfo PtyGetSizeMethodInfo a signature where overloadedMethod _ = ptyGetSize #endif -- method Pty::set_size -- method type : OrdinaryMethod -- Args : [Arg {argCName = "pty", argType = TInterface (Name {namespace = "Vte", name = "Pty"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #VtePty", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rows", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the desired number of rows", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "columns", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the desired number of columns", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : True -- Skip return : False foreign import ccall "vte_pty_set_size" vte_pty_set_size :: Ptr Pty -> -- pty : TInterface (Name {namespace = "Vte", name = "Pty"}) Int32 -> -- rows : TBasicType TInt Int32 -> -- columns : TBasicType TInt Ptr (Ptr GError) -> -- error IO CInt {- | Attempts to resize the pseudo terminal\'s window size. If successful, the OS kernel will send @/SIGWINCH/@ to the child process group. If setting the window size failed, /@error@/ will be set to a 'GI.GLib.Enums.IOError'. -} ptySetSize :: (B.CallStack.HasCallStack, MonadIO m, IsPty a) => a {- ^ /@pty@/: a 'GI.Vte.Objects.Pty.Pty' -} -> Int32 {- ^ /@rows@/: the desired number of rows -} -> Int32 {- ^ /@columns@/: the desired number of columns -} -> m () {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -} ptySetSize pty rows columns = liftIO $ do pty' <- unsafeManagedPtrCastPtr pty onException (do _ <- propagateGError $ vte_pty_set_size pty' rows columns touchManagedPtr pty return () ) (do return () ) #if ENABLE_OVERLOADING data PtySetSizeMethodInfo instance (signature ~ (Int32 -> Int32 -> m ()), MonadIO m, IsPty a) => O.MethodInfo PtySetSizeMethodInfo a signature where overloadedMethod _ = ptySetSize #endif -- method Pty::set_utf8 -- method type : OrdinaryMethod -- Args : [Arg {argCName = "pty", argType = TInterface (Name {namespace = "Vte", name = "Pty"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #VtePty", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "utf8", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether or not the pty is in UTF-8 mode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : True -- Skip return : False foreign import ccall "vte_pty_set_utf8" vte_pty_set_utf8 :: Ptr Pty -> -- pty : TInterface (Name {namespace = "Vte", name = "Pty"}) CInt -> -- utf8 : TBasicType TBoolean Ptr (Ptr GError) -> -- error IO CInt {- | Tells the kernel whether the terminal is UTF-8 or not, in case it can make use of the info. Linux 2.6.5 or so defines IUTF8 to make the line discipline do multibyte backspace correctly. -} ptySetUtf8 :: (B.CallStack.HasCallStack, MonadIO m, IsPty a) => a {- ^ /@pty@/: a 'GI.Vte.Objects.Pty.Pty' -} -> Bool {- ^ /@utf8@/: whether or not the pty is in UTF-8 mode -} -> m () {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -} ptySetUtf8 pty utf8 = liftIO $ do pty' <- unsafeManagedPtrCastPtr pty let utf8' = (fromIntegral . fromEnum) utf8 onException (do _ <- propagateGError $ vte_pty_set_utf8 pty' utf8' touchManagedPtr pty return () ) (do return () ) #if ENABLE_OVERLOADING data PtySetUtf8MethodInfo instance (signature ~ (Bool -> m ()), MonadIO m, IsPty a) => O.MethodInfo PtySetUtf8MethodInfo a signature where overloadedMethod _ = ptySetUtf8 #endif -- XXX Could not generate method Pty::spawn_async -- Error was : Bad introspection data: "Closure not found! Callable\n { returnType = Nothing\n , returnMayBeNull = False\n , returnTransfer = TransferNothing\n , returnDocumentation =\n Documentation { rawDocText = Nothing , sinceVersion = Nothing }\n , args =\n [ Arg\n { argCName = \"pty\"\n , argType = TInterface Name { namespace = \"Vte\" , name = \"Pty\" }\n , direction = DirectionIn\n , mayBeNull = False\n , argDoc =\n Documentation\n { rawDocText = Just \"a #VtePty\" , sinceVersion = Nothing }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"working_directory\"\n , argType = TBasicType TUTF8\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just\n \"the name of a directory the command should start\\n in, or %NULL to use the current working directory\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"argv\"\n , argType = TCArray True (-1) (-1) (TBasicType TFileName)\n , direction = DirectionIn\n , mayBeNull = False\n , argDoc =\n Documentation\n { rawDocText = Just \"child's argument vector\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"envv\"\n , argType = TCArray True (-1) (-1) (TBasicType TFileName)\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just\n \"a list of environment\\n variables to be added to the environment before starting the process, or %NULL\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"spawn_flags\"\n , argType =\n TInterface Name { namespace = \"GLib\" , name = \"SpawnFlags\" }\n , direction = DirectionIn\n , mayBeNull = False\n , argDoc =\n Documentation\n { rawDocText = Just \"flags from #GSpawnFlags\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"child_setup\"\n , argType =\n TInterface\n Name { namespace = \"GLib\" , name = \"SpawnChildSetupFunc\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just\n \"an extra child setup function to run in the child just before exec(), or %NULL\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeNotified\n , argClosure = 6\n , argDestroy = 7\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"child_setup_data\"\n , argType = TBasicType TPtr\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"user data for @child_setup, or %NULL\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeNotified\n , argClosure = 5\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"child_setup_data_destroy\"\n , argType =\n TInterface Name { namespace = \"GLib\" , name = \"DestroyNotify\" }\n , direction = DirectionIn\n , mayBeNull = False\n , argDoc =\n Documentation\n { rawDocText =\n Just \"a #GDestroyNotify for @child_setup_data, or %NULL\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeAsync\n , argClosure = -1\n , argDestroy = 6\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"timeout\"\n , argType = TBasicType TInt\n , direction = DirectionIn\n , mayBeNull = False\n , argDoc =\n Documentation\n { rawDocText =\n Just \"a timeout value in ms, or -1 to wait indefinitely\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"cancellable\"\n , argType =\n TInterface Name { namespace = \"Gio\" , name = \"Cancellable\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"a #GCancellable, or %NULL\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"callback\"\n , argType =\n TInterface Name { namespace = \"Gio\" , name = \"AsyncReadyCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation { rawDocText = Nothing , sinceVersion = Nothing }\n , argScope = ScopeTypeAsync\n , argClosure = 11\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"user_data\"\n , argType = TBasicType TPtr\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation { rawDocText = Nothing , sinceVersion = Nothing }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n ]\n , skipReturn = False\n , callableThrows = False\n , callableDeprecated = Nothing\n , callableDocumentation =\n Documentation\n { rawDocText =\n Just\n \"Starts the specified command under the pseudo-terminal @pty.\\nThe @argv and @envv lists should be %NULL-terminated.\\nThe \\\"TERM\\\" environment variable is automatically set to a default value,\\nbut can be overridden from @envv.\\n@pty_flags controls logging the session to the specified system log files.\\n\\nNote that %G_SPAWN_DO_NOT_REAP_CHILD will always be added to @spawn_flags.\\n\\nNote that all open file descriptors will be closed in the child. If you want\\nto keep some file descriptor open for use in the child process, you need to\\nuse a child setup function that unsets the FD_CLOEXEC flag on that file\\ndescriptor.\\n\\nSee vte_pty_new(), g_spawn_async() and vte_terminal_watch_child() for more information.\"\n , sinceVersion = Just \"0.48\"\n }\n }\nfromList\n [ ( 6\n , Arg\n { argCName = \"child_setup\"\n , argType =\n TInterface\n Name { namespace = \"GLib\" , name = \"SpawnChildSetupFunc\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just\n \"an extra child setup function to run in the child just before exec(), or %NULL\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeNotified\n , argClosure = 6\n , argDestroy = 7\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n )\n , ( 11\n , Arg\n { argCName = \"callback\"\n , argType =\n TInterface Name { namespace = \"Gio\" , name = \"AsyncReadyCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation { rawDocText = Nothing , sinceVersion = Nothing }\n , argScope = ScopeTypeAsync\n , argClosure = 11\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n )\n ]\n5" #if ENABLE_OVERLOADING -- XXX: Dummy instance, since code generation failed. -- Please file a bug at http://github.com/haskell-gi/haskell-gi. data PtySpawnAsyncMethodInfo instance (p ~ (), o ~ O.MethodResolutionFailed "spawnAsync" Pty) => O.MethodInfo PtySpawnAsyncMethodInfo o p where overloadedMethod _ = undefined #endif -- method Pty::spawn_finish -- method type : OrdinaryMethod -- Args : [Arg {argCName = "pty", argType = TInterface (Name {namespace = "Vte", name = "Pty"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #VtePty", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child_pid", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a location to store the child PID, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : True -- Skip return : False foreign import ccall "vte_pty_spawn_finish" vte_pty_spawn_finish :: Ptr Pty -> -- pty : TInterface (Name {namespace = "Vte", name = "Pty"}) Ptr Gio.AsyncResult.AsyncResult -> -- result : TInterface (Name {namespace = "Gio", name = "AsyncResult"}) Ptr Int32 -> -- child_pid : TBasicType TInt Ptr (Ptr GError) -> -- error IO CInt {- | /No description available in the introspection data./ /Since: 0.48/ -} ptySpawnFinish :: (B.CallStack.HasCallStack, MonadIO m, IsPty a, Gio.AsyncResult.IsAsyncResult b) => a {- ^ /@pty@/: a 'GI.Vte.Objects.Pty.Pty' -} -> b {- ^ /@result@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' -} -> m (Int32) {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -} ptySpawnFinish pty result_ = liftIO $ do pty' <- unsafeManagedPtrCastPtr pty result_' <- unsafeManagedPtrCastPtr result_ childPid <- allocMem :: IO (Ptr Int32) onException (do _ <- propagateGError $ vte_pty_spawn_finish pty' result_' childPid childPid' <- peek childPid touchManagedPtr pty touchManagedPtr result_ freeMem childPid return childPid' ) (do freeMem childPid ) #if ENABLE_OVERLOADING data PtySpawnFinishMethodInfo instance (signature ~ (b -> m (Int32)), MonadIO m, IsPty a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo PtySpawnFinishMethodInfo a signature where overloadedMethod _ = ptySpawnFinish #endif