-- | Simple Type: @fixType@ module Data.Geo.GPX.Fix( Fix , foldFix , none , twod , threed , dgps , pps , fix ) where import Text.XML.HXT.Arrow.Pickle data Fix = None | Twod | Threed | Dgps | Pps deriving (Eq, Ord, Show, Enum) -- | The catamorphism for @Fix@. foldFix :: a -- ^ The value if @none@. -> a -- ^ The value if @twod@. -> a -- ^ The value if @threed@. -> a -- ^ The value if @dgps@. -> a -- ^ The value if @pps@. -> Fix -- ^ The value to fold. -> a foldFix n _ _ _ _ None = n foldFix _ t _ _ _ Twod = t foldFix _ _ t _ _ Threed = t foldFix _ _ _ d _ Dgps = d foldFix _ _ _ _ p Pps = p -- | Construct a @Fix@ with a value of @none@. none :: Fix none = None -- | Construct a @Fix@ with a value of @2d@. twod :: Fix twod = Twod -- | Construct a @Fix@ with a value of @3d@. threed :: Fix threed = Threed -- | Construct a @Fix@ with a value of @dgps@. dgps :: Fix dgps = Dgps -- | Construct a @Fix@ with a value of @pps@. pps :: Fix pps = Pps -- | Construct a @Fix@ using a string with a value of @["none", "2d", "3d", "dgps", "pps"]@. fix :: String -- ^ The string value to construct a @Fix@ with. -> Maybe Fix fix "none" = Just none fix "2d"= Just twod fix "3d" = Just threed fix "dgps" = Just dgps fix "pps" = Just pps fix _ = Nothing instance XmlPickler Fix where xpickle = xpWrapMaybe (fix, show) xpText