{- Generated by DrIFT (Automatic class derivations for Haskell) -} {-# LINE 1 "DTypes.hs" #-} module DTypes where import Text.XML.HaXml.XmlContent hiding (Name) -- data types for a simple test program data Person = Person Name Email [Rating] Version {-! derive : XmlContent !-} newtype Name = Name String {-! derive : XmlContent !-} newtype Email = Email String {-! derive : XmlContent !-} newtype Version = Version Int {-! derive : XmlContent !-} data Rating = Rating SubjectID Interest Skill {-! derive : XmlContent !-} newtype SubjectID = SubjectID Int {-! derive : XmlContent !-} newtype Interest = Interest Score {-! derive : XmlContent !-} newtype Skill = Skill Score {-! derive : XmlContent !-} data Score = ScoreNone | ScoreLow | ScoreMedium | ScoreHigh {-! derive : XmlContent !-} {-* Generated by DrIFT : Look, but Don't Touch. *-} instance Haskell2XmlNew Person where toHType v = Defined "Person" [] [Constr "Person" [] [toHType aa,toHType ab,toHType ac,toHType ad]] where (Person aa ab ac ad) = v parseContents = do { e@(Elem t _ _) <- element ["Person"] ; case t of _ | "Person" `isPrefixOf` t -> interior e $ do { aa <- parseContents ; ab <- parseContents ; ac <- parseContents ; ad <- parseContents ; return (Person aa ab ac ad) } } toContents v@(Person aa ab ac ad) = [mkElemC (showConstr 0 (toHType v)) (concat [toContents aa, toContents ab,toContents ac,toContents ad])] instance Haskell2XmlNew Name where toHType v = Defined "Name" [] [Constr "Name" [] [toHType aa]] where (Name aa) = v parseContents = do { e@(Elem t _ _) <- element ["Name"] ; case t of _ | "Name" `isPrefixOf` t -> interior e $ fmap Name parseContents } toContents v@(Name aa) = [mkElemC (showConstr 0 (toHType v)) (toContents aa)] instance Haskell2XmlNew Email where toHType v = Defined "Email" [] [Constr "Email" [] [toHType aa]] where (Email aa) = v parseContents = do { e@(Elem t _ _) <- element ["Email"] ; case t of _ | "Email" `isPrefixOf` t -> interior e $ fmap Email parseContents } toContents v@(Email aa) = [mkElemC (showConstr 0 (toHType v)) (toContents aa)] instance Haskell2XmlNew Version where toHType v = Defined "Version" [] [Constr "Version" [] [toHType aa]] where (Version aa) = v parseContents = do { e@(Elem t _ _) <- element ["Version"] ; case t of _ | "Version" `isPrefixOf` t -> interior e $ fmap Version parseContents } toContents v@(Version aa) = [mkElemC (showConstr 0 (toHType v)) (toContents aa)] instance Haskell2XmlNew Rating where toHType v = Defined "Rating" [] [Constr "Rating" [] [toHType aa,toHType ab,toHType ac]] where (Rating aa ab ac) = v parseContents = do { e@(Elem t _ _) <- element ["Rating"] ; case t of _ | "Rating" `isPrefixOf` t -> interior e $ do { aa <- parseContents ; ab <- parseContents ; ac <- parseContents ; return (Rating aa ab ac) } } toContents v@(Rating aa ab ac) = [mkElemC (showConstr 0 (toHType v)) (concat [toContents aa, toContents ab,toContents ac])] instance Haskell2XmlNew SubjectID where toHType v = Defined "SubjectID" [] [Constr "SubjectID" [] [toHType aa]] where (SubjectID aa) = v parseContents = do { e@(Elem t _ _) <- element ["SubjectID"] ; case t of _ | "SubjectID" `isPrefixOf` t -> interior e $ fmap SubjectID parseContents } toContents v@(SubjectID aa) = [mkElemC (showConstr 0 (toHType v)) (toContents aa)] instance Haskell2XmlNew Interest where toHType v = Defined "Interest" [] [Constr "Interest" [] [toHType aa]] where (Interest aa) = v parseContents = do { e@(Elem t _ _) <- element ["Interest"] ; case t of _ | "Interest" `isPrefixOf` t -> interior e $ fmap Interest parseContents } toContents v@(Interest aa) = [mkElemC (showConstr 0 (toHType v)) (toContents aa)] instance Haskell2XmlNew Skill where toHType v = Defined "Skill" [] [Constr "Skill" [] [toHType aa]] where (Skill aa) = v parseContents = do { e@(Elem t _ _) <- element ["Skill"] ; case t of _ | "Skill" `isPrefixOf` t -> interior e $ fmap Skill parseContents } toContents v@(Skill aa) = [mkElemC (showConstr 0 (toHType v)) (toContents aa)] instance Haskell2XmlNew Score where toHType v = Defined "Score" [] [Constr "ScoreNone" [] [],Constr "ScoreLow" [] [], Constr "ScoreMedium" [] [],Constr "ScoreHigh" [] []] parseContents = do { e@(Elem t _ _) <- element ["ScoreNone","ScoreLow","ScoreMedium","ScoreHigh"] ; case t of _ | "ScoreNone" `isPrefixOf` t -> interior e $ return ScoreNone | "ScoreMedium" `isPrefixOf` t -> interior e $ return ScoreMedium | "ScoreLow" `isPrefixOf` t -> interior e $ return ScoreLow | "ScoreHigh" `isPrefixOf` t -> interior e $ return ScoreHigh } toContents v@ScoreNone = [mkElemC (showConstr 0 (toHType v)) []] toContents v@ScoreLow = [mkElemC (showConstr 1 (toHType v)) []] toContents v@ScoreMedium = [mkElemC (showConstr 2 (toHType v)) []] toContents v@ScoreHigh = [mkElemC (showConstr 3 (toHType v)) []] -- Imported from other files :-