{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.Vte.Functions
    (

 -- * Methods
-- ** getFeatures #method:getFeatures#

    getFeatures                             ,


-- ** getMajorVersion #method:getMajorVersion#

    getMajorVersion                         ,


-- ** getMicroVersion #method:getMicroVersion#

    getMicroVersion                         ,


-- ** getMinorVersion #method:getMinorVersion#

    getMinorVersion                         ,


-- ** getUserShell #method:getUserShell#

    getUserShell                            ,




    ) 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.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.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP


-- function vte_get_user_shell
-- Args : []
-- Lengths : []
-- returnType : Just (TBasicType TFileName)
-- throws : False
-- Skip return : False

foreign import ccall "vte_get_user_shell" vte_get_user_shell ::
    IO CString

{- |
Gets the user\'s shell, or 'Nothing'. In the latter case, the
system default (usually \"\/bin\/sh\") should be used.
-}
getUserShell ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m [Char]
    {- ^ __Returns:__ a newly allocated string with the
  user\'s shell, or 'Nothing' -}
getUserShell  = liftIO $ do
    result <- vte_get_user_shell
    checkUnexpectedReturnNULL "getUserShell" result
    result' <- cstringToString result
    freeMem result
    return result'


-- function vte_get_minor_version
-- Args : []
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "vte_get_minor_version" vte_get_minor_version ::
    IO Word32

{- |
Returns the minor version of the VTE library at runtime.
Contrast this with 'GI.Vte.Constants.MINOR_VERSION' which represents
the version of the VTE library that the code was compiled
with.

/Since: 0.40/
-}
getMinorVersion ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Word32
    {- ^ __Returns:__ the minor version -}
getMinorVersion  = liftIO $ do
    result <- vte_get_minor_version
    return result


-- function vte_get_micro_version
-- Args : []
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "vte_get_micro_version" vte_get_micro_version ::
    IO Word32

{- |
Returns the micro version of the VTE library at runtime.
Contrast this with 'GI.Vte.Constants.MICRO_VERSION' which represents
the version of the VTE library that the code was compiled
with.

/Since: 0.40/
-}
getMicroVersion ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Word32
    {- ^ __Returns:__ the micro version -}
getMicroVersion  = liftIO $ do
    result <- vte_get_micro_version
    return result


-- function vte_get_major_version
-- Args : []
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "vte_get_major_version" vte_get_major_version ::
    IO Word32

{- |
Returns the major version of the VTE library at runtime.
Contrast this with 'GI.Vte.Constants.MAJOR_VERSION' which represents
the version of the VTE library that the code was compiled
with.

/Since: 0.40/
-}
getMajorVersion ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Word32
    {- ^ __Returns:__ the major version -}
getMajorVersion  = liftIO $ do
    result <- vte_get_major_version
    return result


-- function vte_get_features
-- Args : []
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "vte_get_features" vte_get_features ::
    IO CString

{- |
Gets a list of features vte was compiled with.

/Since: 0.40/
-}
getFeatures ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m T.Text
    {- ^ __Returns:__ a string with features -}
getFeatures  = liftIO $ do
    result <- vte_get_features
    checkUnexpectedReturnNULL "getFeatures" result
    result' <- cstringToText result
    return result'