module Network.DBus.Model.Types
( Model(..)
, Interface(..)
, Enumeration(..)
, EnumValue(..)
, Flags(..)
, Flag(..)
, Struct(..)
, Member(..)
, Method(..)
, Annotation(..)
, Signal(..)
, Property(..)
, Arg(..)
, Access(..)
, Doc
) where
import qualified Network.DBus as DBus
data Model = Model
{ interfaces :: [Interface]
, nodeName :: String
, nodeXmlns :: Maybe String
} deriving (Show,Eq)
data Interface = Interface
{ interfaceName :: String
, interfaceMethods :: [Method]
, interfaceSignals :: [Signal]
, interfaceProperties :: [Property]
, interfaceEnums :: [Enumeration]
, interfaceFlagss :: [Flags]
, interfaceStructs :: [Struct]
} deriving (Show,Eq)
data Enumeration = Enumeration
{ enumName :: String
, enumType :: DBus.Type
, enumValues :: [EnumValue]
} deriving (Show,Eq)
data EnumValue = EnumValue
{ enumSuffix :: String
, enumValue :: String
} deriving (Show,Eq)
data Flags = Flags
{ flagsName :: String
, flagsValuePrefix :: String
, flagsType :: DBus.Type
, flagsFlags :: [Flag]
, flagsDoc :: Maybe Doc
} deriving (Show,Eq)
data Flag = Flag
{ flagSuffix :: String
, flagValue :: String
, flagDoc :: Maybe Doc
} deriving (Show,Eq)
data Struct = Struct
{ structName :: String
, structMembers :: [Member]
} deriving (Show,Eq)
data Member = Member
{ memberName :: String
, memberType :: DBus.Type
, memberRawType :: Maybe String
, memberDoc :: Maybe Doc
} deriving (Show,Eq)
data Method = Method
{ methodName :: String
, methodAnnotations :: [Annotation]
, methodParamsIn :: [Arg]
, methodParamsOut :: [Arg]
, methodDoc :: Maybe Doc
} deriving (Show,Eq)
data Annotation = Annotation
{ annotationName :: String
, annotationValue :: String
} deriving (Show,Eq)
data Signal = Signal
{ signalName :: String
, signalParams :: [Arg]
, signalDoc :: Maybe Doc
} deriving (Show,Eq)
data Property = Property
{ propertyName :: String
, propertyType :: DBus.Type
, propertyAccess :: Access
, propertyRawType :: Maybe String
} deriving (Show,Eq)
data Arg = Arg
{ argName :: String
, argType :: DBus.Type
, argDoc :: Maybe Doc
} deriving (Show,Eq)
data Access = Read | Write | ReadWrite
deriving (Show,Eq)
type Doc = String