#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Secret.Structs.SchemaAttribute
(
SchemaAttribute(..) ,
newZeroSchemaAttribute ,
noSchemaAttribute ,
clearSchemaAttributeName ,
getSchemaAttributeName ,
#if ENABLE_OVERLOADING
schemaAttribute_name ,
#endif
setSchemaAttributeName ,
getSchemaAttributeType ,
#if ENABLE_OVERLOADING
schemaAttribute_type ,
#endif
setSchemaAttributeType ,
) 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
import {-# SOURCE #-} qualified GI.Secret.Enums as Secret.Enums
newtype SchemaAttribute = SchemaAttribute (ManagedPtr SchemaAttribute)
foreign import ccall "secret_schema_attribute_get_type" c_secret_schema_attribute_get_type ::
IO GType
instance BoxedObject SchemaAttribute where
boxedType _ = c_secret_schema_attribute_get_type
newZeroSchemaAttribute :: MonadIO m => m SchemaAttribute
newZeroSchemaAttribute = liftIO $ callocBoxedBytes 16 >>= wrapBoxed SchemaAttribute
instance tag ~ 'AttrSet => Constructible SchemaAttribute tag where
new _ attrs = do
o <- newZeroSchemaAttribute
GI.Attributes.set o attrs
return o
noSchemaAttribute :: Maybe SchemaAttribute
noSchemaAttribute = Nothing
getSchemaAttributeName :: MonadIO m => SchemaAttribute -> m (Maybe T.Text)
getSchemaAttributeName s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CString
result <- SP.convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
setSchemaAttributeName :: MonadIO m => SchemaAttribute -> CString -> m ()
setSchemaAttributeName s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: CString)
clearSchemaAttributeName :: MonadIO m => SchemaAttribute -> m ()
clearSchemaAttributeName s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (FP.nullPtr :: CString)
#if ENABLE_OVERLOADING
data SchemaAttributeNameFieldInfo
instance AttrInfo SchemaAttributeNameFieldInfo where
type AttrAllowedOps SchemaAttributeNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint SchemaAttributeNameFieldInfo = (~) CString
type AttrBaseTypeConstraint SchemaAttributeNameFieldInfo = (~) SchemaAttribute
type AttrGetType SchemaAttributeNameFieldInfo = Maybe T.Text
type AttrLabel SchemaAttributeNameFieldInfo = "name"
type AttrOrigin SchemaAttributeNameFieldInfo = SchemaAttribute
attrGet _ = getSchemaAttributeName
attrSet _ = setSchemaAttributeName
attrConstruct = undefined
attrClear _ = clearSchemaAttributeName
schemaAttribute_name :: AttrLabelProxy "name"
schemaAttribute_name = AttrLabelProxy
#endif
getSchemaAttributeType :: MonadIO m => SchemaAttribute -> m Secret.Enums.SchemaAttributeType
getSchemaAttributeType s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
setSchemaAttributeType :: MonadIO m => SchemaAttribute -> Secret.Enums.SchemaAttributeType -> m ()
setSchemaAttributeType s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 8) (val' :: CUInt)
#if ENABLE_OVERLOADING
data SchemaAttributeTypeFieldInfo
instance AttrInfo SchemaAttributeTypeFieldInfo where
type AttrAllowedOps SchemaAttributeTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint SchemaAttributeTypeFieldInfo = (~) Secret.Enums.SchemaAttributeType
type AttrBaseTypeConstraint SchemaAttributeTypeFieldInfo = (~) SchemaAttribute
type AttrGetType SchemaAttributeTypeFieldInfo = Secret.Enums.SchemaAttributeType
type AttrLabel SchemaAttributeTypeFieldInfo = "type"
type AttrOrigin SchemaAttributeTypeFieldInfo = SchemaAttribute
attrGet _ = getSchemaAttributeType
attrSet _ = setSchemaAttributeType
attrConstruct = undefined
attrClear _ = undefined
schemaAttribute_type :: AttrLabelProxy "type"
schemaAttribute_type = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList SchemaAttribute
type instance O.AttributeList SchemaAttribute = SchemaAttributeAttributeList
type SchemaAttributeAttributeList = ('[ '("name", SchemaAttributeNameFieldInfo), '("type", SchemaAttributeTypeFieldInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
type family ResolveSchemaAttributeMethod (t :: Symbol) (o :: *) :: * where
ResolveSchemaAttributeMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveSchemaAttributeMethod t SchemaAttribute, O.MethodInfo info SchemaAttribute p) => O.IsLabelProxy t (SchemaAttribute -> p) where
fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveSchemaAttributeMethod t SchemaAttribute, O.MethodInfo info SchemaAttribute p) => O.IsLabel t (SchemaAttribute -> 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
#endif