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

module GI.Gio.Interfaces.TlsFileDatabase
    ( 

-- * Exported types
    TlsFileDatabase(..)                     ,
    noTlsFileDatabase                       ,
    TlsFileDatabaseK                        ,
    toTlsFileDatabase                       ,


 -- * Properties
-- ** Anchors
    TlsFileDatabaseAnchorsPropertyInfo      ,
    constructTlsFileDatabaseAnchors         ,
    getTlsFileDatabaseAnchors               ,
    setTlsFileDatabaseAnchors               ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gio.Types
import GI.Gio.Callbacks
import qualified GI.GObject as GObject

-- interface TlsFileDatabase 

newtype TlsFileDatabase = TlsFileDatabase (ForeignPtr TlsFileDatabase)
noTlsFileDatabase :: Maybe TlsFileDatabase
noTlsFileDatabase = Nothing

-- VVV Prop "anchors"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getTlsFileDatabaseAnchors :: (MonadIO m, TlsFileDatabaseK o) => o -> m T.Text
getTlsFileDatabaseAnchors obj = liftIO $ getObjectPropertyString obj "anchors"

setTlsFileDatabaseAnchors :: (MonadIO m, TlsFileDatabaseK o) => o -> T.Text -> m ()
setTlsFileDatabaseAnchors obj val = liftIO $ setObjectPropertyString obj "anchors" val

constructTlsFileDatabaseAnchors :: T.Text -> IO ([Char], GValue)
constructTlsFileDatabaseAnchors val = constructObjectPropertyString "anchors" val

data TlsFileDatabaseAnchorsPropertyInfo
instance AttrInfo TlsFileDatabaseAnchorsPropertyInfo where
    type AttrAllowedOps TlsFileDatabaseAnchorsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint TlsFileDatabaseAnchorsPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint TlsFileDatabaseAnchorsPropertyInfo = TlsFileDatabaseK
    type AttrGetType TlsFileDatabaseAnchorsPropertyInfo = T.Text
    type AttrLabel TlsFileDatabaseAnchorsPropertyInfo = "TlsFileDatabase::anchors"
    attrGet _ = getTlsFileDatabaseAnchors
    attrSet _ = setTlsFileDatabaseAnchors
    attrConstruct _ = constructTlsFileDatabaseAnchors

type instance AttributeList TlsFileDatabase = TlsFileDatabaseAttributeList
type TlsFileDatabaseAttributeList = ('[ '("anchors", TlsFileDatabaseAnchorsPropertyInfo)] :: [(Symbol, *)])

type instance SignalList TlsFileDatabase = TlsFileDatabaseSignalList
type TlsFileDatabaseSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

foreign import ccall "g_tls_file_database_get_type"
    c_g_tls_file_database_get_type :: IO GType

type instance ParentTypes TlsFileDatabase = TlsFileDatabaseParentTypes
type TlsFileDatabaseParentTypes = '[TlsDatabase, GObject.Object]

instance GObject TlsFileDatabase where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_g_tls_file_database_get_type
    

class GObject o => TlsFileDatabaseK o
instance (GObject o, IsDescendantOf TlsFileDatabase o) => TlsFileDatabaseK o

toTlsFileDatabase :: TlsFileDatabaseK o => o -> IO TlsFileDatabase
toTlsFileDatabase = unsafeCastTo TlsFileDatabase