module Graphics.Wayland.Scanner.Types where
import Foreign
import Language.Haskell.TH (Name)
data ServerClient = Server | Client deriving (Eq)
type InterfaceName = String
data Interface = Interface {
interfaceName :: InterfaceName,
interfaceVersion :: Int,
interfaceRequests :: [Message],
interfaceEvents :: [Message],
interfaceEnums :: [WLEnum]
} deriving (Show)
type EnumName = String
data WLEnum = WLEnum {
enumName :: EnumName,
enumEntries :: [(String,Int)]
} deriving (Show)
data ArgumentType = IntArg | UIntArg | FixedArg | StringArg | ObjectArg Name | NewIdArg Name MessageName | ArrayArg | FdArg deriving (Show)
argConversionTable :: [(String, ArgumentType)]
argConversionTable = [
("int", IntArg),
("uint", UIntArg),
("fixed", FixedArg),
("string", StringArg),
("fd", FdArg),
("array", ArrayArg)]
type Argument = (String, ArgumentType, Bool)
type MessageName = String
data Message = Message {
messageName :: MessageName,
messageArguments :: [Argument],
messageIsDestructor :: Bool
} deriving (Show)
type ProtocolName = String
data ProtocolSpec = ProtocolSpec {
protocolName :: ProtocolName,
protocolInterfaces :: [Interface]
} deriving (Show)
type WLArray = Ptr (())