From b7df69ef81f63bcb1c73f841620ac69b0b80e82b Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Mon, 6 Sep 2021 04:08:08 +0200 Subject: [PATCH] Import Core in TH module --- src/Quasar/Wayland/Core.hs | 2 ++ src/Quasar/Wayland/TH.hs | 32 +++++++++++++++----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Quasar/Wayland/Core.hs b/src/Quasar/Wayland/Core.hs index eac854f..997db9e 100644 --- a/src/Quasar/Wayland/Core.hs +++ b/src/Quasar/Wayland/Core.hs @@ -1,4 +1,6 @@ module Quasar.Wayland.Core ( + ObjectId, + Opcode, ProtocolState, ClientProtocolState, initialClientProtocolState, diff --git a/src/Quasar/Wayland/TH.hs b/src/Quasar/Wayland/TH.hs index f1c7375..1869b03 100644 --- a/src/Quasar/Wayland/TH.hs +++ b/src/Quasar/Wayland/TH.hs @@ -9,7 +9,7 @@ import Data.ByteString qualified as BS import Language.Haskell.TH import Language.Haskell.TH.Lib import Language.Haskell.TH.Syntax (addDependentFile) ---import Quasar.Wayland.Core +import Quasar.Wayland.Core @@ -24,61 +24,59 @@ generateWaylandProcol protocolFile = do pure [] -type Opcode = Word16 - -data Protocol = Protocol {interfaces :: [Interface]} +data ProtocolSpec = ProtocolSpec {interfaces :: [InterfaceSpec]} deriving stock (Show) -data Interface = Interface { +data InterfaceSpec = InterfaceSpec { name :: String, - requests :: [Request], - events :: [Event] + requests :: [RequestSpec], + events :: [EventSpec] } deriving stock (Show) -data Request = Request { +data RequestSpec = RequestSpec { name :: String, opcode :: Opcode } deriving stock (Show) -data Event = Event { +data EventSpec = EventSpec { name :: String, opcode :: Opcode } deriving stock (Show) -parseProtocol :: MonadFail m => BS.ByteString -> m Protocol +parseProtocol :: MonadFail m => BS.ByteString -> m ProtocolSpec parseProtocol xml = do (Just element) <- pure $ parseXMLDoc xml interfaces <- mapM parseInterface $ findChildren (blank_name { qName = "interface" }) element - pure Protocol { + pure ProtocolSpec { interfaces } -parseInterface :: MonadFail m => Element -> m Interface +parseInterface :: MonadFail m => Element -> m InterfaceSpec parseInterface element = do name <- getAttr "name" element requests <- mapM parseRequest $ zip [0..] $ findChildren (qname "request") element events <- mapM parseEvent $ zip [0..] $ findChildren (qname "events") element - pure Interface { + pure InterfaceSpec { name, requests, events } -parseRequest :: MonadFail m => (Opcode, Element) -> m Request +parseRequest :: MonadFail m => (Opcode, Element) -> m RequestSpec parseRequest (opcode, element) = do name <- getAttr "name" element - pure Request { + pure RequestSpec { name, opcode } -parseEvent :: MonadFail m => (Opcode, Element) -> m Event +parseEvent :: MonadFail m => (Opcode, Element) -> m EventSpec parseEvent (opcode, element) = do name <- getAttr "name" element - pure Event { + pure EventSpec { name, opcode } -- GitLab