packages feed

GPX 0.6.3 → 0.7.0

raw patch · 64 files changed

+1346/−1234 lines, 64 filesdep +newtypePVP ok

version bump matches the API change (PVP)

Dependencies added: newtype

API changes (from Hackage documentation)

- Data.Geo.GPX.Bounds: bounds :: (Latitude, Longitude) -> (Latitude, Longitude) -> Bounds
- Data.Geo.GPX.Bounds: data Bounds
- Data.Geo.GPX.Bounds: instance Eq Bounds
- Data.Geo.GPX.Bounds: instance MaxlatL Bounds
- Data.Geo.GPX.Bounds: instance MaxlonL Bounds
- Data.Geo.GPX.Bounds: instance MinlatL Bounds
- Data.Geo.GPX.Bounds: instance MinlonL Bounds
- Data.Geo.GPX.Bounds: instance Ord Bounds
- Data.Geo.GPX.Bounds: instance XmlPickler Bounds
- Data.Geo.GPX.Copyright: copyright :: String -> Maybe String -> Maybe String -> Copyright
- Data.Geo.GPX.Copyright: data Copyright
- Data.Geo.GPX.Copyright: instance AuthorL Copyright String
- Data.Geo.GPX.Copyright: instance Eq Copyright
- Data.Geo.GPX.Copyright: instance LicenseL Copyright
- Data.Geo.GPX.Copyright: instance Ord Copyright
- Data.Geo.GPX.Copyright: instance XmlPickler Copyright
- Data.Geo.GPX.Copyright: instance YearL Copyright
- Data.Geo.GPX.Degrees: data Degrees
- Data.Geo.GPX.Degrees: degrees :: Double -> Degrees
- Data.Geo.GPX.Degrees: instance Eq Degrees
- Data.Geo.GPX.Degrees: instance Ord Degrees
- Data.Geo.GPX.Degrees: instance Show Degrees
- Data.Geo.GPX.Degrees: instance XmlPickler Degrees
- Data.Geo.GPX.Degrees: runDegrees :: Degrees -> Double
- Data.Geo.GPX.DgpsStation: data DgpsStation
- Data.Geo.GPX.DgpsStation: dgpsStation :: Int -> Maybe DgpsStation
- Data.Geo.GPX.DgpsStation: instance Eq DgpsStation
- Data.Geo.GPX.DgpsStation: instance Ord DgpsStation
- Data.Geo.GPX.DgpsStation: instance XmlPickler DgpsStation
- Data.Geo.GPX.DgpsStation: runDgpsStation :: DgpsStation -> Int
- Data.Geo.GPX.Email: data Email
- Data.Geo.GPX.Email: email :: String -> String -> Email
- Data.Geo.GPX.Email: instance DomainL Email
- Data.Geo.GPX.Email: instance Eq Email
- Data.Geo.GPX.Email: instance IdL Email
- Data.Geo.GPX.Email: instance Ord Email
- Data.Geo.GPX.Email: instance XmlPickler Email
- Data.Geo.GPX.Extensions: data Extensions
- Data.Geo.GPX.Extensions: extensions :: XmlTrees -> Extensions
- Data.Geo.GPX.Extensions: instance Eq Extensions
- Data.Geo.GPX.Extensions: instance Show Extensions
- Data.Geo.GPX.Extensions: instance XmlPickler Extensions
- Data.Geo.GPX.Extensions: runExtensions :: Extensions -> XmlTrees
- Data.Geo.GPX.Fix: data Fix
- Data.Geo.GPX.Fix: dgps :: Fix
- Data.Geo.GPX.Fix: fix :: String -> Maybe Fix
- Data.Geo.GPX.Fix: foldFix :: a -> a -> a -> a -> a -> Fix -> a
- Data.Geo.GPX.Fix: instance Enum Fix
- Data.Geo.GPX.Fix: instance Eq Fix
- Data.Geo.GPX.Fix: instance Ord Fix
- Data.Geo.GPX.Fix: instance Show Fix
- Data.Geo.GPX.Fix: instance XmlPickler Fix
- Data.Geo.GPX.Fix: none :: Fix
- Data.Geo.GPX.Fix: pps :: Fix
- Data.Geo.GPX.Fix: threed :: Fix
- Data.Geo.GPX.Fix: twod :: Fix
- Data.Geo.GPX.Gpx: data Gpx
- Data.Geo.GPX.Gpx: gpx :: String -> String -> Maybe Metadata -> [Wpt] -> [Rte] -> [Trk] -> Maybe Extensions -> Gpx
- Data.Geo.GPX.Gpx: instance CreatorL Gpx
- Data.Geo.GPX.Gpx: instance Eq Gpx
- Data.Geo.GPX.Gpx: instance ExtensionsL Gpx
- Data.Geo.GPX.Gpx: instance MetadataL Gpx
- Data.Geo.GPX.Gpx: instance RtesL Gpx
- Data.Geo.GPX.Gpx: instance TrksL Gpx
- Data.Geo.GPX.Gpx: instance VersionL Gpx
- Data.Geo.GPX.Gpx: instance WptsL Gpx
- Data.Geo.GPX.Gpx: instance XmlPickler Gpx
- Data.Geo.GPX.Latitude: data Latitude
- Data.Geo.GPX.Latitude: instance Enum Latitude
- Data.Geo.GPX.Latitude: instance Eq Latitude
- Data.Geo.GPX.Latitude: instance Floating Latitude
- Data.Geo.GPX.Latitude: instance Fractional Latitude
- Data.Geo.GPX.Latitude: instance Num Latitude
- Data.Geo.GPX.Latitude: instance Ord Latitude
- Data.Geo.GPX.Latitude: instance Real Latitude
- Data.Geo.GPX.Latitude: instance RealFloat Latitude
- Data.Geo.GPX.Latitude: instance RealFrac Latitude
- Data.Geo.GPX.Latitude: instance Show Latitude
- Data.Geo.GPX.Latitude: instance XmlPickler Latitude
- Data.Geo.GPX.Latitude: latitude :: Double -> Latitude
- Data.Geo.GPX.Latitude: runLatitude :: Latitude -> Double
- Data.Geo.GPX.Link: data Link
- Data.Geo.GPX.Link: instance Eq Link
- Data.Geo.GPX.Link: instance HrefL Link
- Data.Geo.GPX.Link: instance Ord Link
- Data.Geo.GPX.Link: instance TextL Link
- Data.Geo.GPX.Link: instance TypeL Link
- Data.Geo.GPX.Link: instance XmlPickler Link
- Data.Geo.GPX.Link: link :: String -> Maybe String -> Maybe String -> Link
- Data.Geo.GPX.Longitude: data Longitude
- Data.Geo.GPX.Longitude: instance Enum Longitude
- Data.Geo.GPX.Longitude: instance Eq Longitude
- Data.Geo.GPX.Longitude: instance Floating Longitude
- Data.Geo.GPX.Longitude: instance Fractional Longitude
- Data.Geo.GPX.Longitude: instance Num Longitude
- Data.Geo.GPX.Longitude: instance Ord Longitude
- Data.Geo.GPX.Longitude: instance Real Longitude
- Data.Geo.GPX.Longitude: instance RealFloat Longitude
- Data.Geo.GPX.Longitude: instance RealFrac Longitude
- Data.Geo.GPX.Longitude: instance Show Longitude
- Data.Geo.GPX.Longitude: instance XmlPickler Longitude
- Data.Geo.GPX.Longitude: longitude :: Double -> Longitude
- Data.Geo.GPX.Longitude: runLongitude :: Longitude -> Double
- Data.Geo.GPX.Metadata: data Metadata
- Data.Geo.GPX.Metadata: instance AuthorL Metadata (Maybe Person)
- Data.Geo.GPX.Metadata: instance BoundsL Metadata
- Data.Geo.GPX.Metadata: instance CopyrightL Metadata
- Data.Geo.GPX.Metadata: instance DescL Metadata
- Data.Geo.GPX.Metadata: instance Eq Metadata
- Data.Geo.GPX.Metadata: instance ExtensionsL Metadata
- Data.Geo.GPX.Metadata: instance KeywordsL Metadata
- Data.Geo.GPX.Metadata: instance LinksL Metadata
- Data.Geo.GPX.Metadata: instance NameL Metadata
- Data.Geo.GPX.Metadata: instance TimeL Metadata
- Data.Geo.GPX.Metadata: instance XmlPickler Metadata
- Data.Geo.GPX.Metadata: metadata :: Maybe String -> Maybe String -> Maybe Person -> Maybe Copyright -> [Link] -> Maybe DateTime -> Maybe String -> Maybe Bounds -> Maybe Extensions -> Metadata
- Data.Geo.GPX.Person: data Person
- Data.Geo.GPX.Person: instance EmailL Person
- Data.Geo.GPX.Person: instance Eq Person
- Data.Geo.GPX.Person: instance LinkL Person
- Data.Geo.GPX.Person: instance NameL Person
- Data.Geo.GPX.Person: instance Ord Person
- Data.Geo.GPX.Person: instance XmlPickler Person
- Data.Geo.GPX.Person: person :: Maybe String -> Maybe Email -> Maybe Link -> Person
- Data.Geo.GPX.Pt: data Pt
- Data.Geo.GPX.Pt: instance EleL Pt
- Data.Geo.GPX.Pt: instance Eq Pt
- Data.Geo.GPX.Pt: instance LatL Pt
- Data.Geo.GPX.Pt: instance LonL Pt
- Data.Geo.GPX.Pt: instance Ord Pt
- Data.Geo.GPX.Pt: instance TimeL Pt
- Data.Geo.GPX.Pt: instance XmlPickler Pt
- Data.Geo.GPX.Pt: pt :: Latitude -> Longitude -> Maybe Double -> Maybe DateTime -> Pt
- Data.Geo.GPX.Ptseg: data Ptseg
- Data.Geo.GPX.Ptseg: instance Eq Ptseg
- Data.Geo.GPX.Ptseg: instance Ord Ptseg
- Data.Geo.GPX.Ptseg: instance XmlPickler Ptseg
- Data.Geo.GPX.Ptseg: ptseg :: [Pt] -> Ptseg
- Data.Geo.GPX.Ptseg: runPtseg :: Ptseg -> [Pt]
- Data.Geo.GPX.Rte: data Rte
- Data.Geo.GPX.Rte: instance CmtL Rte
- Data.Geo.GPX.Rte: instance DescL Rte
- Data.Geo.GPX.Rte: instance Eq Rte
- Data.Geo.GPX.Rte: instance ExtensionsL Rte
- Data.Geo.GPX.Rte: instance LinksL Rte
- Data.Geo.GPX.Rte: instance NameL Rte
- Data.Geo.GPX.Rte: instance NumberL Rte
- Data.Geo.GPX.Rte: instance RteptsL Rte
- Data.Geo.GPX.Rte: instance SrcL Rte
- Data.Geo.GPX.Rte: instance TypeL Rte
- Data.Geo.GPX.Rte: instance XmlPickler Rte
- Data.Geo.GPX.Rte: rte :: Maybe String -> Maybe String -> Maybe String -> Maybe String -> [Link] -> Maybe Int -> Maybe String -> Maybe Extensions -> [Wpt] -> Rte
- Data.Geo.GPX.Trk: data Trk
- Data.Geo.GPX.Trk: instance CmtL Trk
- Data.Geo.GPX.Trk: instance DescL Trk
- Data.Geo.GPX.Trk: instance Eq Trk
- Data.Geo.GPX.Trk: instance ExtensionsL Trk
- Data.Geo.GPX.Trk: instance LinksL Trk
- Data.Geo.GPX.Trk: instance NameL Trk
- Data.Geo.GPX.Trk: instance NumberL Trk
- Data.Geo.GPX.Trk: instance SrcL Trk
- Data.Geo.GPX.Trk: instance TrksegsL Trk
- Data.Geo.GPX.Trk: instance TypeL Trk
- Data.Geo.GPX.Trk: instance XmlPickler Trk
- Data.Geo.GPX.Trk: trk :: Maybe String -> Maybe String -> Maybe String -> Maybe String -> [Link] -> Maybe Int -> Maybe String -> Maybe Extensions -> [Trkseg] -> Trk
- Data.Geo.GPX.Trkseg: data Trkseg
- Data.Geo.GPX.Trkseg: instance Eq Trkseg
- Data.Geo.GPX.Trkseg: instance ExtensionsL Trkseg
- Data.Geo.GPX.Trkseg: instance TrkptsL Trkseg
- Data.Geo.GPX.Trkseg: instance XmlPickler Trkseg
- Data.Geo.GPX.Trkseg: trkseg :: [Wpt] -> Maybe Extensions -> Trkseg
- Data.Geo.GPX.Wpt: data Wpt
- Data.Geo.GPX.Wpt: instance AgeofdgpsdataL Wpt
- Data.Geo.GPX.Wpt: instance CmtL Wpt
- Data.Geo.GPX.Wpt: instance DescL Wpt
- Data.Geo.GPX.Wpt: instance DgpsidL Wpt
- Data.Geo.GPX.Wpt: instance EleL Wpt
- Data.Geo.GPX.Wpt: instance Eq Wpt
- Data.Geo.GPX.Wpt: instance ExtensionsL Wpt
- Data.Geo.GPX.Wpt: instance FixL Wpt
- Data.Geo.GPX.Wpt: instance GeoidheightL Wpt
- Data.Geo.GPX.Wpt: instance HdopL Wpt
- Data.Geo.GPX.Wpt: instance LatL Wpt
- Data.Geo.GPX.Wpt: instance LinksL Wpt
- Data.Geo.GPX.Wpt: instance LonL Wpt
- Data.Geo.GPX.Wpt: instance MagvarL Wpt
- Data.Geo.GPX.Wpt: instance NameL Wpt
- Data.Geo.GPX.Wpt: instance PdopL Wpt
- Data.Geo.GPX.Wpt: instance SatL Wpt
- Data.Geo.GPX.Wpt: instance SrcL Wpt
- Data.Geo.GPX.Wpt: instance SymL Wpt
- Data.Geo.GPX.Wpt: instance TimeL Wpt
- Data.Geo.GPX.Wpt: instance TypeL Wpt
- Data.Geo.GPX.Wpt: instance VdopL Wpt
- Data.Geo.GPX.Wpt: instance XmlPickler Wpt
- Data.Geo.GPX.Wpt: wpt :: Latitude -> Longitude -> Maybe Double -> Maybe DateTime -> Maybe Degrees -> Maybe Double -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> [Link] -> Maybe String -> Maybe String -> Maybe Fix -> Maybe Int -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe DgpsStation -> Maybe Extensions -> Wpt
- Data.Geo.GPX.Wpt: wpt' :: Latitude -> Longitude -> Wpt
+ Data.Geo.GPX: data GPX
+ Data.Geo.GPX: instance CreatorL GPX
+ Data.Geo.GPX: instance Eq GPX
+ Data.Geo.GPX: instance ExtensionsL GPX
+ Data.Geo.GPX: instance GpxP GPX
+ Data.Geo.GPX: instance MetadataL GPX
+ Data.Geo.GPX: instance Newtype GPX Gpx
+ Data.Geo.GPX: instance RtesL GPX
+ Data.Geo.GPX: instance TrksL GPX
+ Data.Geo.GPX: instance VersionL GPX
+ Data.Geo.GPX: instance WptsL GPX
+ Data.Geo.GPX: instance XmlPickler GPX
+ Data.Geo.GPX.Type.Bounds: bounds :: (Latitude, Longitude) -> (Latitude, Longitude) -> Bounds
+ Data.Geo.GPX.Type.Bounds: data Bounds
+ Data.Geo.GPX.Type.Bounds: instance Eq Bounds
+ Data.Geo.GPX.Type.Bounds: instance MaxlatL Bounds
+ Data.Geo.GPX.Type.Bounds: instance MaxlonL Bounds
+ Data.Geo.GPX.Type.Bounds: instance MinlatL Bounds
+ Data.Geo.GPX.Type.Bounds: instance MinlonL Bounds
+ Data.Geo.GPX.Type.Bounds: instance Ord Bounds
+ Data.Geo.GPX.Type.Bounds: instance XmlPickler Bounds
+ Data.Geo.GPX.Type.Copyright: copyright :: String -> Maybe String -> Maybe String -> Copyright
+ Data.Geo.GPX.Type.Copyright: data Copyright
+ Data.Geo.GPX.Type.Copyright: instance AuthorL Copyright String
+ Data.Geo.GPX.Type.Copyright: instance Eq Copyright
+ Data.Geo.GPX.Type.Copyright: instance LicenseL Copyright
+ Data.Geo.GPX.Type.Copyright: instance Ord Copyright
+ Data.Geo.GPX.Type.Copyright: instance XmlPickler Copyright
+ Data.Geo.GPX.Type.Copyright: instance YearL Copyright
+ Data.Geo.GPX.Type.Degrees: data Degrees
+ Data.Geo.GPX.Type.Degrees: degrees :: Double -> Degrees
+ Data.Geo.GPX.Type.Degrees: instance Eq Degrees
+ Data.Geo.GPX.Type.Degrees: instance Newtype Degrees Double
+ Data.Geo.GPX.Type.Degrees: instance Ord Degrees
+ Data.Geo.GPX.Type.Degrees: instance Show Degrees
+ Data.Geo.GPX.Type.Degrees: instance XmlPickler Degrees
+ Data.Geo.GPX.Type.Degrees: runDegrees :: Degrees -> Double
+ Data.Geo.GPX.Type.DgpsStation: data DgpsStation
+ Data.Geo.GPX.Type.DgpsStation: dgpsStation :: Int -> Maybe DgpsStation
+ Data.Geo.GPX.Type.DgpsStation: instance Eq DgpsStation
+ Data.Geo.GPX.Type.DgpsStation: instance Ord DgpsStation
+ Data.Geo.GPX.Type.DgpsStation: instance XmlPickler DgpsStation
+ Data.Geo.GPX.Type.DgpsStation: runDgpsStation :: DgpsStation -> Int
+ Data.Geo.GPX.Type.Email: data Email
+ Data.Geo.GPX.Type.Email: email :: String -> String -> Email
+ Data.Geo.GPX.Type.Email: instance DomainL Email
+ Data.Geo.GPX.Type.Email: instance Eq Email
+ Data.Geo.GPX.Type.Email: instance IdL Email
+ Data.Geo.GPX.Type.Email: instance Ord Email
+ Data.Geo.GPX.Type.Email: instance XmlPickler Email
+ Data.Geo.GPX.Type.Extensions: data Extensions
+ Data.Geo.GPX.Type.Extensions: extensions :: XmlTrees -> Extensions
+ Data.Geo.GPX.Type.Extensions: instance Eq Extensions
+ Data.Geo.GPX.Type.Extensions: instance Newtype Extensions XmlTrees
+ Data.Geo.GPX.Type.Extensions: instance Show Extensions
+ Data.Geo.GPX.Type.Extensions: instance XmlPickler Extensions
+ Data.Geo.GPX.Type.Extensions: runExtensions :: Extensions -> XmlTrees
+ Data.Geo.GPX.Type.Fix: data Fix
+ Data.Geo.GPX.Type.Fix: dgps :: Fix
+ Data.Geo.GPX.Type.Fix: fix :: String -> Maybe Fix
+ Data.Geo.GPX.Type.Fix: foldFix :: a -> a -> a -> a -> a -> Fix -> a
+ Data.Geo.GPX.Type.Fix: instance Enum Fix
+ Data.Geo.GPX.Type.Fix: instance Eq Fix
+ Data.Geo.GPX.Type.Fix: instance Ord Fix
+ Data.Geo.GPX.Type.Fix: instance Show Fix
+ Data.Geo.GPX.Type.Fix: instance XmlPickler Fix
+ Data.Geo.GPX.Type.Fix: none :: Fix
+ Data.Geo.GPX.Type.Fix: pps :: Fix
+ Data.Geo.GPX.Type.Fix: threed :: Fix
+ Data.Geo.GPX.Type.Fix: twod :: Fix
+ Data.Geo.GPX.Type.Gpx: class GpxP g
+ Data.Geo.GPX.Type.Gpx: data Gpx
+ Data.Geo.GPX.Type.Gpx: gpx :: GpxP g => String -> String -> Maybe Metadata -> [Wpt] -> [Rte] -> [Trk] -> Maybe Extensions -> g
+ Data.Geo.GPX.Type.Gpx: instance CreatorL Gpx
+ Data.Geo.GPX.Type.Gpx: instance Eq Gpx
+ Data.Geo.GPX.Type.Gpx: instance ExtensionsL Gpx
+ Data.Geo.GPX.Type.Gpx: instance GpxP Gpx
+ Data.Geo.GPX.Type.Gpx: instance MetadataL Gpx
+ Data.Geo.GPX.Type.Gpx: instance RtesL Gpx
+ Data.Geo.GPX.Type.Gpx: instance TrksL Gpx
+ Data.Geo.GPX.Type.Gpx: instance VersionL Gpx
+ Data.Geo.GPX.Type.Gpx: instance WptsL Gpx
+ Data.Geo.GPX.Type.Gpx: instance XmlPickler Gpx
+ Data.Geo.GPX.Type.Latitude: data Latitude
+ Data.Geo.GPX.Type.Latitude: instance Enum Latitude
+ Data.Geo.GPX.Type.Latitude: instance Eq Latitude
+ Data.Geo.GPX.Type.Latitude: instance Floating Latitude
+ Data.Geo.GPX.Type.Latitude: instance Fractional Latitude
+ Data.Geo.GPX.Type.Latitude: instance Newtype Latitude Double
+ Data.Geo.GPX.Type.Latitude: instance Num Latitude
+ Data.Geo.GPX.Type.Latitude: instance Ord Latitude
+ Data.Geo.GPX.Type.Latitude: instance Real Latitude
+ Data.Geo.GPX.Type.Latitude: instance RealFloat Latitude
+ Data.Geo.GPX.Type.Latitude: instance RealFrac Latitude
+ Data.Geo.GPX.Type.Latitude: instance Show Latitude
+ Data.Geo.GPX.Type.Latitude: instance XmlPickler Latitude
+ Data.Geo.GPX.Type.Latitude: latitude :: Double -> Latitude
+ Data.Geo.GPX.Type.Latitude: runLatitude :: Latitude -> Double
+ Data.Geo.GPX.Type.Link: data Link
+ Data.Geo.GPX.Type.Link: instance Eq Link
+ Data.Geo.GPX.Type.Link: instance HrefL Link
+ Data.Geo.GPX.Type.Link: instance Ord Link
+ Data.Geo.GPX.Type.Link: instance TextL Link
+ Data.Geo.GPX.Type.Link: instance TypeL Link
+ Data.Geo.GPX.Type.Link: instance XmlPickler Link
+ Data.Geo.GPX.Type.Link: link :: String -> Maybe String -> Maybe String -> Link
+ Data.Geo.GPX.Type.Longitude: data Longitude
+ Data.Geo.GPX.Type.Longitude: instance Enum Longitude
+ Data.Geo.GPX.Type.Longitude: instance Eq Longitude
+ Data.Geo.GPX.Type.Longitude: instance Floating Longitude
+ Data.Geo.GPX.Type.Longitude: instance Fractional Longitude
+ Data.Geo.GPX.Type.Longitude: instance Newtype Longitude Double
+ Data.Geo.GPX.Type.Longitude: instance Num Longitude
+ Data.Geo.GPX.Type.Longitude: instance Ord Longitude
+ Data.Geo.GPX.Type.Longitude: instance Real Longitude
+ Data.Geo.GPX.Type.Longitude: instance RealFloat Longitude
+ Data.Geo.GPX.Type.Longitude: instance RealFrac Longitude
+ Data.Geo.GPX.Type.Longitude: instance Show Longitude
+ Data.Geo.GPX.Type.Longitude: instance XmlPickler Longitude
+ Data.Geo.GPX.Type.Longitude: longitude :: Double -> Longitude
+ Data.Geo.GPX.Type.Longitude: runLongitude :: Longitude -> Double
+ Data.Geo.GPX.Type.Metadata: data Metadata
+ Data.Geo.GPX.Type.Metadata: instance AuthorL Metadata (Maybe Person)
+ Data.Geo.GPX.Type.Metadata: instance BoundsL Metadata
+ Data.Geo.GPX.Type.Metadata: instance CopyrightL Metadata
+ Data.Geo.GPX.Type.Metadata: instance DescL Metadata
+ Data.Geo.GPX.Type.Metadata: instance Eq Metadata
+ Data.Geo.GPX.Type.Metadata: instance ExtensionsL Metadata
+ Data.Geo.GPX.Type.Metadata: instance KeywordsL Metadata
+ Data.Geo.GPX.Type.Metadata: instance LinksL Metadata
+ Data.Geo.GPX.Type.Metadata: instance NameL Metadata
+ Data.Geo.GPX.Type.Metadata: instance TimeL Metadata
+ Data.Geo.GPX.Type.Metadata: instance XmlPickler Metadata
+ Data.Geo.GPX.Type.Metadata: metadata :: Maybe String -> Maybe String -> Maybe Person -> Maybe Copyright -> [Link] -> Maybe DateTime -> Maybe String -> Maybe Bounds -> Maybe Extensions -> Metadata
+ Data.Geo.GPX.Type.Person: data Person
+ Data.Geo.GPX.Type.Person: instance EmailL Person
+ Data.Geo.GPX.Type.Person: instance Eq Person
+ Data.Geo.GPX.Type.Person: instance LinkL Person
+ Data.Geo.GPX.Type.Person: instance NameL Person
+ Data.Geo.GPX.Type.Person: instance Ord Person
+ Data.Geo.GPX.Type.Person: instance XmlPickler Person
+ Data.Geo.GPX.Type.Person: person :: Maybe String -> Maybe Email -> Maybe Link -> Person
+ Data.Geo.GPX.Type.Pt: data Pt
+ Data.Geo.GPX.Type.Pt: instance EleL Pt
+ Data.Geo.GPX.Type.Pt: instance Eq Pt
+ Data.Geo.GPX.Type.Pt: instance LatL Pt
+ Data.Geo.GPX.Type.Pt: instance LonL Pt
+ Data.Geo.GPX.Type.Pt: instance Ord Pt
+ Data.Geo.GPX.Type.Pt: instance TimeL Pt
+ Data.Geo.GPX.Type.Pt: instance XmlPickler Pt
+ Data.Geo.GPX.Type.Pt: pt :: Latitude -> Longitude -> Maybe Double -> Maybe DateTime -> Pt
+ Data.Geo.GPX.Type.Ptseg: data Ptseg
+ Data.Geo.GPX.Type.Ptseg: instance Eq Ptseg
+ Data.Geo.GPX.Type.Ptseg: instance Newtype Ptseg [Pt]
+ Data.Geo.GPX.Type.Ptseg: instance Ord Ptseg
+ Data.Geo.GPX.Type.Ptseg: instance XmlPickler Ptseg
+ Data.Geo.GPX.Type.Ptseg: ptseg :: [Pt] -> Ptseg
+ Data.Geo.GPX.Type.Ptseg: runPtseg :: Ptseg -> [Pt]
+ Data.Geo.GPX.Type.Rte: data Rte
+ Data.Geo.GPX.Type.Rte: instance CmtL Rte
+ Data.Geo.GPX.Type.Rte: instance DescL Rte
+ Data.Geo.GPX.Type.Rte: instance Eq Rte
+ Data.Geo.GPX.Type.Rte: instance ExtensionsL Rte
+ Data.Geo.GPX.Type.Rte: instance LinksL Rte
+ Data.Geo.GPX.Type.Rte: instance NameL Rte
+ Data.Geo.GPX.Type.Rte: instance NumberL Rte
+ Data.Geo.GPX.Type.Rte: instance RteptsL Rte
+ Data.Geo.GPX.Type.Rte: instance SrcL Rte
+ Data.Geo.GPX.Type.Rte: instance TypeL Rte
+ Data.Geo.GPX.Type.Rte: instance XmlPickler Rte
+ Data.Geo.GPX.Type.Rte: rte :: Maybe String -> Maybe String -> Maybe String -> Maybe String -> [Link] -> Maybe Int -> Maybe String -> Maybe Extensions -> [Wpt] -> Rte
+ Data.Geo.GPX.Type.Trk: data Trk
+ Data.Geo.GPX.Type.Trk: instance CmtL Trk
+ Data.Geo.GPX.Type.Trk: instance DescL Trk
+ Data.Geo.GPX.Type.Trk: instance Eq Trk
+ Data.Geo.GPX.Type.Trk: instance ExtensionsL Trk
+ Data.Geo.GPX.Type.Trk: instance LinksL Trk
+ Data.Geo.GPX.Type.Trk: instance NameL Trk
+ Data.Geo.GPX.Type.Trk: instance NumberL Trk
+ Data.Geo.GPX.Type.Trk: instance SrcL Trk
+ Data.Geo.GPX.Type.Trk: instance TrksegsL Trk
+ Data.Geo.GPX.Type.Trk: instance TypeL Trk
+ Data.Geo.GPX.Type.Trk: instance XmlPickler Trk
+ Data.Geo.GPX.Type.Trk: trk :: Maybe String -> Maybe String -> Maybe String -> Maybe String -> [Link] -> Maybe Int -> Maybe String -> Maybe Extensions -> [Trkseg] -> Trk
+ Data.Geo.GPX.Type.Trkseg: data Trkseg
+ Data.Geo.GPX.Type.Trkseg: instance Eq Trkseg
+ Data.Geo.GPX.Type.Trkseg: instance ExtensionsL Trkseg
+ Data.Geo.GPX.Type.Trkseg: instance TrkptsL Trkseg
+ Data.Geo.GPX.Type.Trkseg: instance XmlPickler Trkseg
+ Data.Geo.GPX.Type.Trkseg: trkseg :: [Wpt] -> Maybe Extensions -> Trkseg
+ Data.Geo.GPX.Type.Wpt: data Wpt
+ Data.Geo.GPX.Type.Wpt: instance AgeofdgpsdataL Wpt
+ Data.Geo.GPX.Type.Wpt: instance CmtL Wpt
+ Data.Geo.GPX.Type.Wpt: instance DescL Wpt
+ Data.Geo.GPX.Type.Wpt: instance DgpsidL Wpt
+ Data.Geo.GPX.Type.Wpt: instance EleL Wpt
+ Data.Geo.GPX.Type.Wpt: instance Eq Wpt
+ Data.Geo.GPX.Type.Wpt: instance ExtensionsL Wpt
+ Data.Geo.GPX.Type.Wpt: instance FixL Wpt
+ Data.Geo.GPX.Type.Wpt: instance GeoidheightL Wpt
+ Data.Geo.GPX.Type.Wpt: instance HdopL Wpt
+ Data.Geo.GPX.Type.Wpt: instance LatL Wpt
+ Data.Geo.GPX.Type.Wpt: instance LinksL Wpt
+ Data.Geo.GPX.Type.Wpt: instance LonL Wpt
+ Data.Geo.GPX.Type.Wpt: instance MagvarL Wpt
+ Data.Geo.GPX.Type.Wpt: instance NameL Wpt
+ Data.Geo.GPX.Type.Wpt: instance PdopL Wpt
+ Data.Geo.GPX.Type.Wpt: instance SatL Wpt
+ Data.Geo.GPX.Type.Wpt: instance SrcL Wpt
+ Data.Geo.GPX.Type.Wpt: instance SymL Wpt
+ Data.Geo.GPX.Type.Wpt: instance TimeL Wpt
+ Data.Geo.GPX.Type.Wpt: instance TypeL Wpt
+ Data.Geo.GPX.Type.Wpt: instance VdopL Wpt
+ Data.Geo.GPX.Type.Wpt: instance XmlPickler Wpt
+ Data.Geo.GPX.Type.Wpt: wpt :: Latitude -> Longitude -> Maybe Double -> Maybe DateTime -> Maybe Degrees -> Maybe Double -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> [Link] -> Maybe String -> Maybe String -> Maybe Fix -> Maybe Int -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe DgpsStation -> Maybe Extensions -> Wpt
+ Data.Geo.GPX.Type.Wpt: wpt' :: Latitude -> Longitude -> Wpt

Files

GPX.cabal view
@@ -1,5 +1,5 @@ Name:                GPX-Version:             0.6.3+Version:             0.7.0 License:             BSD3 License-File:        LICENSE Synopsis:            Parse GPX files@@ -26,6 +26,7 @@                      , comonad-transformers                      , data-lens                      , xsd+                     , newtype    GHC-Options:      -Wall                     -fno-warn-name-shadowing@@ -33,25 +34,26 @@   Hs-Source-Dirs:   src    Exposed-Modules:   Data.Geo.GPX-                     Data.Geo.GPX.DgpsStation-                     Data.Geo.GPX.Fix-                     Data.Geo.GPX.Degrees-                     Data.Geo.GPX.Longitude-                     Data.Geo.GPX.Latitude-                     Data.Geo.GPX.Bounds-                     Data.Geo.GPX.Extensions-                     Data.Geo.GPX.Pt-                     Data.Geo.GPX.Ptseg-                     Data.Geo.GPX.Email-                     Data.Geo.GPX.Link-                     Data.Geo.GPX.Person-                     Data.Geo.GPX.Copyright-                     Data.Geo.GPX.Wpt-                     Data.Geo.GPX.Trkseg-                     Data.Geo.GPX.Trk-                     Data.Geo.GPX.Rte-                     Data.Geo.GPX.Metadata-                     Data.Geo.GPX.Gpx+                     Data.Geo.GPX.Type+                     Data.Geo.GPX.Type.DgpsStation+                     Data.Geo.GPX.Type.Fix+                     Data.Geo.GPX.Type.Degrees+                     Data.Geo.GPX.Type.Longitude+                     Data.Geo.GPX.Type.Latitude+                     Data.Geo.GPX.Type.Bounds+                     Data.Geo.GPX.Type.Extensions+                     Data.Geo.GPX.Type.Pt+                     Data.Geo.GPX.Type.Ptseg+                     Data.Geo.GPX.Type.Email+                     Data.Geo.GPX.Type.Link+                     Data.Geo.GPX.Type.Person+                     Data.Geo.GPX.Type.Copyright+                     Data.Geo.GPX.Type.Wpt+                     Data.Geo.GPX.Type.Trkseg+                     Data.Geo.GPX.Type.Trk+                     Data.Geo.GPX.Type.Rte+                     Data.Geo.GPX.Type.Metadata+                     Data.Geo.GPX.Type.Gpx                      Data.Geo.GPX.Lens                      Data.Geo.GPX.Lens.MinlatL                      Data.Geo.GPX.Lens.MaxlatL
src/Data/Geo/GPX.hs view
@@ -1,46 +1,69 @@+{-# LANGUAGE MultiParamTypeClasses #-}+ -- | GPX 1.1 Schema <http://www.topografix.com/GPX/1/1/> module Data.Geo.GPX(-  module Data.Geo.GPX.DgpsStation-, module Data.Geo.GPX.Fix-, module Data.Geo.GPX.Degrees-, module Data.Geo.GPX.Longitude-, module Data.Geo.GPX.Latitude-, module Data.Geo.GPX.Bounds-, module Data.Geo.GPX.Extensions-, module Data.Geo.GPX.Pt-, module Data.Geo.GPX.Ptseg-, module Data.Geo.GPX.Email-, module Data.Geo.GPX.Link-, module Data.Geo.GPX.Person-, module Data.Geo.GPX.Copyright-, module Data.Geo.GPX.Wpt-, module Data.Geo.GPX.Trkseg-, module Data.Geo.GPX.Trk-, module Data.Geo.GPX.Rte-, module Data.Geo.GPX.Metadata-, module Data.Geo.GPX.Gpx+  module Data.Geo.GPX.Type , module Data.Geo.GPX.Lens , module Control.Arrow+, GPX ) where -import Data.Geo.GPX.DgpsStation-import Data.Geo.GPX.Fix-import Data.Geo.GPX.Degrees-import Data.Geo.GPX.Longitude-import Data.Geo.GPX.Latitude-import Data.Geo.GPX.Bounds-import Data.Geo.GPX.Extensions-import Data.Geo.GPX.Pt-import Data.Geo.GPX.Ptseg-import Data.Geo.GPX.Email-import Data.Geo.GPX.Link-import Data.Geo.GPX.Person-import Data.Geo.GPX.Copyright-import Data.Geo.GPX.Wpt-import Data.Geo.GPX.Trkseg-import Data.Geo.GPX.Trk-import Data.Geo.GPX.Rte-import Data.Geo.GPX.Metadata-import Data.Geo.GPX.Gpx+import Data.Geo.GPX.Type import Data.Geo.GPX.Lens import Control.Arrow+import Text.XML.HXT.Arrow.Pickle+import Control.Newtype+import Data.Lens.Common+import Control.Comonad.Trans.Store++-- | Top-level GPX data type with the root XML element applied.+newtype GPX = GPX Gpx+  deriving Eq++instance XmlPickler GPX where+  xpickle = xpWrap (GPX, \(GPX g) -> g) (xpElem "gpx" xpickle)++instance GpxP GPX where+  gpx v c m w r t e =+    GPX (gpx v c m w r t e)+    +instance Newtype GPX Gpx where+  pack = +    GPX+  unpack (GPX x) =+    x++instance VersionL GPX where+  versionL =+    newtypeLens >>> versionL++instance CreatorL GPX where+  creatorL =+    newtypeLens >>> creatorL++instance MetadataL GPX where+  metadataL =+    newtypeLens >>> metadataL++instance WptsL GPX where+  wptsL =+    newtypeLens >>> wptsL++instance RtesL GPX where+  rtesL =+    newtypeLens >>> rtesL++instance TrksL GPX where+  trksL =+    newtypeLens >>> trksL++instance ExtensionsL GPX where+  extensionsL =+    newtypeLens >>> extensionsL++-- not exported (belongs in data-lens)+newtypeLens ::+  Lens GPX Gpx+newtypeLens =+  Lens (store pack . unpack)+
− src/Data/Geo/GPX/Bounds.hs
@@ -1,51 +0,0 @@--- | Complex Type: @boundsType@ <http://www.topografix.com/GPX/1/1/#type_boundsType>-module Data.Geo.GPX.Bounds(-  Bounds-, bounds-) where--import Data.Geo.GPX.Latitude-import Data.Geo.GPX.Longitude-import Data.Geo.GPX.Lens.MinlatL-import Data.Geo.GPX.Lens.MaxlatL-import Data.Geo.GPX.Lens.MinlonL-import Data.Geo.GPX.Lens.MaxlonL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Bounds = Bounds (Latitude, Longitude) (Latitude, Longitude)-  deriving (Eq, Ord)--bounds :: -  (Latitude, Longitude) -- ^ The minimum latitude and longitude.-  -> (Latitude, Longitude) -- ^ The maximum latitude and longitude.-  -> Bounds-bounds =-  Bounds--instance MinlatL Bounds where-  minlatL =-    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\minlat -> Bounds (minlat, minlon) (maxlat, maxlon)) minlat--instance MinlonL Bounds where-  minlonL =-    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\minlon -> Bounds (minlat, minlon) (maxlat, maxlon)) minlon--instance MaxlatL Bounds where-  maxlatL =-    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\maxlat -> Bounds (minlat, minlon) (maxlat, maxlon)) maxlat--instance MaxlonL Bounds where-  maxlonL =-    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\maxlon -> Bounds (minlat, minlon) (maxlat, maxlon)) maxlon--instance XmlPickler Bounds where-  xpickle =-    xpWrap (\(minlat', minlon', maxlat', maxlon') -> bounds (minlat', minlon') (maxlat', maxlon'),-            \(Bounds (minlat', minlon') (maxlat', maxlon')) -> (minlat', minlon', maxlat', maxlon')) (xp4Tuple-              (xpAttr "minlat" xpickle)-              (xpAttr "minlon" xpickle)-              (xpAttr "maxlat" xpickle)-              (xpAttr "maxlon" xpickle))-
− src/Data/Geo/GPX/Copyright.hs
@@ -1,44 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}---- | Complex Type: @copyrightType@ <http://www.topografix.com/GPX/1/1/#type_copyrightType>-module Data.Geo.GPX.Copyright(-  Copyright-, copyright-) where--import Data.Geo.GPX.Lens.AuthorL-import Data.Geo.GPX.Lens.YearL-import Data.Geo.GPX.Lens.LicenseL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Copyright = Copyright String (Maybe String) (Maybe String)-  deriving (Eq, Ord)--copyright-  :: String -- ^ The author.-  -> Maybe String -- ^ The year.-  -> Maybe String -- ^ The license.-  -> Copyright-copyright =-  Copyright--instance AuthorL Copyright String where-  authorL =-    Lens $ \(Copyright author year license) -> store (\author -> Copyright author year license) author--instance YearL Copyright where-  yearL =-    Lens $ \(Copyright author year license) -> store (\year -> Copyright author year license) year--instance LicenseL Copyright where-  licenseL =-    Lens $ \(Copyright author year license) -> store (\license -> Copyright author year license) license--instance XmlPickler Copyright where-  xpickle =-    xpWrap (\(author', year', license') -> copyright author' year' license', \(Copyright author' year' license') -> (author', year', license')) (xpTriple-           (xpAttr "author" xpText)-           (xpOption (xpElem "year" xpText))-           (xpOption (xpElem "license" xpText)))
− src/Data/Geo/GPX/Degrees.hs
@@ -1,30 +0,0 @@--- | Simple Type: @degreesType@ <http://www.topografix.com/GPX/1/1/#type_degreesType>-module Data.Geo.GPX.Degrees(-  Degrees-, degrees-, runDegrees-) where---import Data.Fixed-import Text.XML.HXT.Arrow.Pickle--newtype Degrees = Degrees Double-  deriving (Eq, Ord, Show)--degrees ::-  Double -- ^ The value which will be between 0 and 360 (values out of the range are truncated using a modulus operation).-  -> Degrees-degrees n =-  Degrees (n `mod'` 360)--runDegrees ::-  Degrees-  -> Double-runDegrees (Degrees d) =-  d--instance XmlPickler Degrees where-  xpickle =-    xpWrap (degrees, \(Degrees n) -> n) xpPrim-
− src/Data/Geo/GPX/DgpsStation.hs
@@ -1,33 +0,0 @@--- | Simple Type: @dgpsStationType@ <http://www.topografix.com/GPX/1/1/#type_dgpsStationType>-module Data.Geo.GPX.DgpsStation(-  DgpsStation-, dgpsStation-, runDgpsStation-) where--import Data.Ix-import Text.XML.HXT.Arrow.Pickle--newtype DgpsStation = DgpsStation Int-  deriving (Eq, Ord)--dgpsStation ::-  Int -- ^ The value between 0 and 1023.-  -> Maybe DgpsStation-dgpsStation n =-  if inRange (0, 1023) n-    then-      Just (DgpsStation n)-    else-      Nothing--runDgpsStation ::-  DgpsStation-  -> Int-runDgpsStation (DgpsStation i) =-  i--instance XmlPickler DgpsStation where-  xpickle =-    xpWrapMaybe (dgpsStation, \(DgpsStation n) -> n) xpickle-
− src/Data/Geo/GPX/Email.hs
@@ -1,36 +0,0 @@--- | Complex Type: @emailType@ <http://www.topografix.com/GPX/1/1/#type_emailType>-module Data.Geo.GPX.Email(-  Email-, email-) where--import Data.Geo.GPX.Lens.IdL-import Data.Geo.GPX.Lens.DomainL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Email = Email String String-  deriving (Eq, Ord)--email ::-  String -- ^ The id.-  -> String -- ^ The domain.-  -> Email-email =-  Email--instance IdL Email where-  idL =-    Lens $ \(Email id domain) -> store (\id -> Email id domain) id--instance DomainL Email where-  domainL =-    Lens $ \(Email id domain) -> store (\domain -> Email id domain) domain--instance XmlPickler Email where-  xpickle =-    xpWrap (uncurry email, \(Email id' domain') -> (id', domain'))-           (xpPair (xpAttr "id" xpText) (xpAttr "domain" xpText))--
− src/Data/Geo/GPX/Extensions.hs
@@ -1,29 +0,0 @@--- | Complex Type: @extensionsType@ <http://www.topografix.com/GPX/1/1/#type_extensionsType>-module Data.Geo.GPX.Extensions(-  Extensions-, extensions-, runExtensions-) where--import Text.XML.HXT.Arrow.Pickle-import Text.XML.HXT.DOM.TypeDefs--newtype Extensions = Extensions XmlTrees-  deriving (Eq, Show)--extensions :: -  XmlTrees-  -> Extensions-extensions =-  Extensions--runExtensions ::-  Extensions-  -> XmlTrees-runExtensions (Extensions t) =-  t--instance XmlPickler Extensions where-  xpickle =-    xpWrap (Extensions, \(Extensions t) -> t) xpTrees-
− src/Data/Geo/GPX/Fix.hs
@@ -1,76 +0,0 @@--- | Simple Type: @fixType@ <http://www.topografix.com/GPX/1/1/#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--
− src/Data/Geo/GPX/Gpx.hs
@@ -1,79 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}---- | Complex Type: @gpxType@ <http://www.topografix.com/GPX/1/1/#type_gpxType>-module Data.Geo.GPX.Gpx(-  Gpx-, gpx-) where--import Data.Geo.GPX.Metadata-import Data.Geo.GPX.Wpt-import Data.Geo.GPX.Rte-import Data.Geo.GPX.Trk-import Data.Geo.GPX.Extensions-import Data.Geo.GPX.Lens.VersionL-import Data.Geo.GPX.Lens.CreatorL-import Data.Geo.GPX.Lens.MetadataL-import Data.Geo.GPX.Lens.WptsL-import Data.Geo.GPX.Lens.RtesL-import Data.Geo.GPX.Lens.TrksL-import Data.Geo.GPX.Lens.ExtensionsL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Gpx = Gpx String String (Maybe Metadata) [Wpt] [Rte] [Trk] (Maybe Extensions)-  deriving Eq--gpx ::-  String -- ^ The version.-  -> String -- ^ The creator.-  -> Maybe Metadata -- ^ The metadata.-  -> [Wpt] -- ^ The waypoints (wpt).-  -> [Rte] -- ^ The routes (rte).-  -> [Trk] -- ^ The tracks (trk).-  -> Maybe Extensions -- ^ The extensions.-  -> Gpx-gpx =-  Gpx--instance VersionL Gpx where-  versionL =-    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\version -> Gpx version creator metadata wpts rtes trks extensions) version--instance CreatorL Gpx where-  creatorL =-    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\creator -> Gpx version creator metadata wpts rtes trks extensions) creator--instance MetadataL Gpx where-  metadataL =-    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\metadata -> Gpx version creator metadata wpts rtes trks extensions) metadata--instance WptsL Gpx where-  wptsL =-    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\wpts -> Gpx version creator metadata wpts rtes trks extensions) wpts--instance RtesL Gpx where-  rtesL =-    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\rtes -> Gpx version creator metadata wpts rtes trks extensions) rtes--instance TrksL Gpx where-  trksL =-    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\trks -> Gpx version creator metadata wpts rtes trks extensions) trks--instance ExtensionsL Gpx where-  extensionsL =-    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\extensions -> Gpx version creator metadata wpts rtes trks extensions) extensions--instance XmlPickler Gpx where-  xpickle =-    xpWrap (\(version', creator', metadata', wpt', rte', trk', extensions') -> gpx version' creator' metadata' wpt' rte' trk' extensions',-              \(Gpx version' creator' metadata' wpt' rte' trk' extensions') -> (version', creator', metadata', wpt', rte', trk', extensions')) (xpElem "gpx" (xp7Tuple-                (xpAttr "version" xpText)-                (xpAttr "creator" xpText)-                (xpOption (xpElem "metadata" xpickle))-                (xpList (xpElem "wpt" xpickle))-                (xpList (xpElem "rte" xpickle))-                (xpList (xpElem "trk" xpickle))-                (xpOption (xpElem "extensions" xpickle))))-
− src/Data/Geo/GPX/Latitude.hs
@@ -1,33 +0,0 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-}---- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType>-module Data.Geo.GPX.Latitude(-  Latitude-, latitude-, runLatitude-) where--import Data.Fixed-import Text.XML.HXT.Arrow.Pickle--newtype Latitude = Latitude Double-  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)--latitude ::-  Double -- ^ The value which will be between -90 and 90 (values out of the range are truncated using a modulus operation).-  -> Latitude-latitude n =-  Latitude ((n + 90) `mod'` 180 - 90)--runLatitude ::-  Latitude-  -> Double-runLatitude (Latitude d) =-  d--instance Show Latitude where-  show (Latitude n) = show n--instance XmlPickler Latitude where-  xpickle = xpWrap (latitude, \(Latitude n) -> n) xpPrim-
src/Data/Geo/GPX/Lens/BoundsL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.BoundsL where -import Data.Geo.GPX.Bounds+import Data.Geo.GPX.Type.Bounds import Data.Lens.Common  class BoundsL a where
src/Data/Geo/GPX/Lens/CopyrightL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.CopyrightL where -import Data.Geo.GPX.Copyright+import Data.Geo.GPX.Type.Copyright import Data.Lens.Common  class CopyrightL a where
src/Data/Geo/GPX/Lens/DgpsidL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.DgpsidL where -import Data.Geo.GPX.DgpsStation+import Data.Geo.GPX.Type.DgpsStation import Data.Lens.Common  class DgpsidL a where
src/Data/Geo/GPX/Lens/EmailL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.EmailL where -import Data.Geo.GPX.Email+import Data.Geo.GPX.Type.Email import Data.Lens.Common  class EmailL a where
src/Data/Geo/GPX/Lens/ExtensionsL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.ExtensionsL where -import Data.Geo.GPX.Extensions+import Data.Geo.GPX.Type.Extensions import Data.Lens.Common  class ExtensionsL a where
src/Data/Geo/GPX/Lens/FixL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.FixL where -import Data.Geo.GPX.Fix+import Data.Geo.GPX.Type.Fix import Data.Lens.Common  class FixL a where
src/Data/Geo/GPX/Lens/LatL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.LatL where -import Data.Geo.GPX.Latitude+import Data.Geo.GPX.Type.Latitude import Data.Lens.Common  class LatL a where
src/Data/Geo/GPX/Lens/LinkL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.LinkL where -import Data.Geo.GPX.Link+import Data.Geo.GPX.Type.Link import Data.Lens.Common  class LinkL a where
src/Data/Geo/GPX/Lens/LinksL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.LinksL where -import Data.Geo.GPX.Link+import Data.Geo.GPX.Type.Link import Data.Lens.Common  class LinksL a where
src/Data/Geo/GPX/Lens/LonL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.LonL where -import Data.Geo.GPX.Longitude+import Data.Geo.GPX.Type.Longitude import Data.Lens.Common  class LonL a where
src/Data/Geo/GPX/Lens/MagvarL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.MagvarL where -import Data.Geo.GPX.Degrees+import Data.Geo.GPX.Type.Degrees import Data.Lens.Common  class MagvarL a where
src/Data/Geo/GPX/Lens/MaxlatL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.MaxlatL where -import Data.Geo.GPX.Latitude+import Data.Geo.GPX.Type.Latitude import Data.Lens.Common  class MaxlatL a where
src/Data/Geo/GPX/Lens/MaxlonL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.MaxlonL where -import Data.Geo.GPX.Longitude+import Data.Geo.GPX.Type.Longitude import Data.Lens.Common  class MaxlonL a where
src/Data/Geo/GPX/Lens/MetadataL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.MetadataL where -import Data.Geo.GPX.Metadata+import Data.Geo.GPX.Type.Metadata import Data.Lens.Common  class MetadataL a where
src/Data/Geo/GPX/Lens/MinlatL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.MinlatL where -import Data.Geo.GPX.Latitude+import Data.Geo.GPX.Type.Latitude import Data.Lens.Common  class MinlatL a where
src/Data/Geo/GPX/Lens/MinlonL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.MinlonL where -import Data.Geo.GPX.Longitude+import Data.Geo.GPX.Type.Longitude import Data.Lens.Common  class MinlonL a where
src/Data/Geo/GPX/Lens/PtsL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.PtsL where -import Data.Geo.GPX.Pt+import Data.Geo.GPX.Type.Pt import Data.Lens.Common  class PtsL a where
src/Data/Geo/GPX/Lens/RteptsL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.RteptsL where -import Data.Geo.GPX.Wpt+import Data.Geo.GPX.Type.Wpt import Data.Lens.Common  class RteptsL a where
src/Data/Geo/GPX/Lens/RtesL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.RtesL where -import Data.Geo.GPX.Rte+import Data.Geo.GPX.Type.Rte import Data.Lens.Common  class RtesL a where
src/Data/Geo/GPX/Lens/TrkptsL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.TrkptsL where -import Data.Geo.GPX.Wpt+import Data.Geo.GPX.Type.Wpt import Data.Lens.Common  class TrkptsL a where
src/Data/Geo/GPX/Lens/TrksL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.TrksL where -import Data.Geo.GPX.Trk+import Data.Geo.GPX.Type.Trk import Data.Lens.Common  class TrksL a where
src/Data/Geo/GPX/Lens/TrksegsL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.TrksegsL where -import Data.Geo.GPX.Trkseg+import Data.Geo.GPX.Type.Trkseg import Data.Lens.Common  class TrksegsL a where
src/Data/Geo/GPX/Lens/WptsL.hs view
@@ -1,6 +1,6 @@ module Data.Geo.GPX.Lens.WptsL where -import Data.Geo.GPX.Wpt+import Data.Geo.GPX.Type.Wpt import Data.Lens.Common  class WptsL a where
− src/Data/Geo/GPX/Link.hs
@@ -1,43 +0,0 @@--- | Complex Type: @linkType@ <http://www.topografix.com/GPX/1/1/#type_linkType>-module Data.Geo.GPX.Link(-  Link-, link-) where--import Data.Geo.GPX.Lens.HrefL-import Data.Geo.GPX.Lens.TextL-import Data.Geo.GPX.Lens.TypeL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Link = Link String (Maybe String) (Maybe String)-  deriving (Eq, Ord)--link ::-  String -- ^ The href.-  -> Maybe String -- ^ The text.-  -> Maybe String -- ^ The type.-  -> Link-link =-  Link--instance HrefL Link where-  hrefL =-    Lens $ \(Link href text typ) -> store (\href -> Link href text typ) href--instance TextL Link where-  textL =-    Lens $ \(Link href text typ) -> store (\text -> Link href text typ) text--instance TypeL Link where-  typeL =-    Lens $ \(Link href text typ) -> store (\typ -> Link href text typ) typ--instance XmlPickler Link where-  xpickle =-    xpWrap (\(href, text, type') -> link href text type', \(Link href text type') -> (href, text, type')) (xpTriple-           (xpAttr "href" xpText)-           (xpOption (xpElem "text" xpText))-           (xpOption (xpElem "type" xpText)))-
− src/Data/Geo/GPX/Longitude.hs
@@ -1,33 +0,0 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-}---- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType>-module Data.Geo.GPX.Longitude(-  Longitude-, longitude-, runLongitude-) where--import Data.Fixed-import Text.XML.HXT.Arrow.Pickle--newtype Longitude = Longitude Double-  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)--longitude ::-  Double -- ^ The value which will be between -180 and 180 (values out of the range are truncated using a modulus operation).-  -> Longitude-longitude n =-  Longitude ((n + 180) `mod'` 360 - 180)--runLongitude ::-  Longitude-  -> Double-runLongitude (Longitude d) =-  d--instance Show Longitude where-  show (Longitude n) = show n--instance XmlPickler Longitude where-  xpickle = xpWrap (longitude, \(Longitude n) -> n) xpPrim-
− src/Data/Geo/GPX/Metadata.hs
@@ -1,94 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}---- | Complex Type: @metadataType@ <http://www.topografix.com/GPX/1/1/#type_metadataType>-module Data.Geo.GPX.Metadata(-  Metadata-, metadata-) where--import Data.Geo.GPX.Person-import Data.Geo.GPX.Copyright-import Data.Geo.GPX.Link-import Data.Geo.GPX.Bounds-import Data.Geo.GPX.Extensions-import Data.Geo.GPX.Lens.NameL-import Data.Geo.GPX.Lens.DescL-import Data.Geo.GPX.Lens.AuthorL-import Data.Geo.GPX.Lens.CopyrightL-import Data.Geo.GPX.Lens.LinksL-import Data.Geo.GPX.Lens.TimeL-import Data.Geo.GPX.Lens.KeywordsL-import Data.Geo.GPX.Lens.BoundsL-import Data.Geo.GPX.Lens.ExtensionsL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle-import Text.XML.XSD.DateTime--data Metadata = Metadata (Maybe String) (Maybe String) (Maybe Person) (Maybe Copyright) [Link] (Maybe DateTime) (Maybe String) (Maybe Bounds) (Maybe Extensions)-  deriving Eq--metadata ::-  Maybe String -- ^ The name.-  -> Maybe String -- ^ The desc.-  -> Maybe Person -- ^ The author.-  -> Maybe Copyright -- ^ The copyright.-  -> [Link] -- ^ The links (link).-  -> Maybe DateTime -- ^ The time.-  -> Maybe String -- ^ The keywords.-  -> Maybe Bounds -- ^ The bounds.-  -> Maybe Extensions -- ^ The extensions-  -> Metadata-metadata =-  Metadata--instance NameL Metadata where-  nameL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\name -> Metadata name desc author copyright links time keywords bounds extensions) name--instance DescL Metadata where-  descL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\desc -> Metadata name desc author copyright links time keywords bounds extensions) desc--instance AuthorL Metadata (Maybe Person) where-  authorL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\author -> Metadata name desc author copyright links time keywords bounds extensions) author--instance CopyrightL Metadata where-  copyrightL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\copyright -> Metadata name desc author copyright links time keywords bounds extensions) copyright--instance LinksL Metadata where-  linksL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\links -> Metadata name desc author copyright links time keywords bounds extensions) links--instance TimeL Metadata where-  timeL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\time -> Metadata name desc author copyright links time keywords bounds extensions) time--instance KeywordsL Metadata where-  keywordsL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\keywords -> Metadata name desc author copyright links time keywords bounds extensions) keywords--instance BoundsL Metadata where-  boundsL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\bounds -> Metadata name desc author copyright links time keywords bounds extensions) bounds--instance ExtensionsL Metadata where-  extensionsL =-    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\extensions -> Metadata name desc author copyright links time keywords bounds extensions) extensions--instance XmlPickler Metadata where-  xpickle =-    xpWrap (\(a, b, c, d, e, f, g, h, i) -> metadata a b c d e f g h i, \(Metadata a b c d e f g h i) -> (a, b, c, d, e, f, g, h, i)) (xp9Tuple-           (xpOption (xpElem "name" xpText))-           (xpOption (xpElem "desc" xpText))-           (xpOption (xpElem "author" xpickle))-           (xpOption (xpElem "copyright" xpickle))-           (xpList (xpElem "link" xpickle))-           (xpOption (xpElem "time" (xpWrapMaybe (dateTime, show) xpText)))-           (xpOption (xpElem "keywords" xpText))-           (xpOption (xpElem "bounds" xpickle))-           (xpOption (xpElem "extensions" xpickle)))--
− src/Data/Geo/GPX/Person.hs
@@ -1,45 +0,0 @@--- | Complex Type: @personType@ <http://www.topografix.com/GPX/1/1/#type_personType>-module Data.Geo.GPX.Person(-  Person-, person-) where--import Data.Geo.GPX.Email-import Data.Geo.GPX.Link-import Data.Geo.GPX.Lens.NameL-import Data.Geo.GPX.Lens.EmailL-import Data.Geo.GPX.Lens.LinkL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Person = Person (Maybe String) (Maybe Email) (Maybe Link)-  deriving (Eq, Ord)--person ::-  Maybe String -- ^ The name.-  -> Maybe Email -- ^ The email.-  -> Maybe Link -- ^ The link.-  -> Person-person =-  Person--instance NameL Person where-  nameL =-    Lens $ \(Person name email link) -> store (\name -> Person name email link) name--instance EmailL Person where-  emailL =-    Lens $ \(Person name email link) -> store (\email -> Person name email link) email--instance LinkL Person where-  linkL =-    Lens $ \(Person name email link) -> store (\link -> Person name email link) link--instance XmlPickler Person where-  xpickle =-    xpWrap (\(name', email', link') -> person name' email' link', \(Person name' email' link') -> (name', email', link')) (xpTriple-           (xpOption (xpElem "name" xpText))-           (xpOption (xpElem "email" xpickle))-           (xpOption (xpElem "link" xpickle)))-
− src/Data/Geo/GPX/Pt.hs
@@ -1,54 +0,0 @@--- | Complex Type: @ptType@ <http://www.topografix.com/GPX/1/1/#type_ptType>-module Data.Geo.GPX.Pt(-  Pt-, pt-) where--import Data.Geo.GPX.Latitude-import Data.Geo.GPX.Longitude-import Data.Geo.GPX.Lens.LatL-import Data.Geo.GPX.Lens.LonL-import Data.Geo.GPX.Lens.EleL-import Data.Geo.GPX.Lens.TimeL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle-import Text.XML.XSD.DateTime--data Pt = Pt Latitude Longitude (Maybe Double) (Maybe DateTime)-  deriving (Eq, Ord)--pt ::-  Latitude -- ^ The lat.-  -> Longitude -- ^ The lon.-  -> Maybe Double -- ^ The ele.-  -> Maybe DateTime -- ^ The time.-  -> Pt-pt =-  Pt--instance LatL Pt where-  latL =-    Lens $ \(Pt lat lon ele time) -> store (\lat -> Pt lat lon ele time) lat--instance LonL Pt where-  lonL =-    Lens $ \(Pt lat lon ele time) -> store (\lon -> Pt lat lon ele time) lon--instance EleL Pt where-  eleL =-    Lens $ \(Pt lat lon ele time) -> store (\ele -> Pt lat lon ele time) ele--instance TimeL Pt where-  timeL =-    Lens $ \(Pt lat lon ele time) -> store (\time -> Pt lat lon ele time) time--instance XmlPickler Pt where-  xpickle =-    xpWrap (\(lat', lon', ele', time') -> pt lat' lon' ele' time',-           \(Pt lat' lon' ele' time') -> (lat', lon', ele', time')) (xp4Tuple-             (xpAttr "lat" xpickle)-             (xpAttr "lon" xpickle)-             (xpOption (xpElem "ele" xpPrim))-             (xpOption (xpElem "time" (xpWrapMaybe (dateTime, show) xpText))))-
− src/Data/Geo/GPX/Ptseg.hs
@@ -1,29 +0,0 @@--- | Complex Type: @ptsegType@ <http://www.topografix.com/GPX/1/1/#type_ptsegType>-module Data.Geo.GPX.Ptseg(-  Ptseg-, ptseg-, runPtseg-) where--import Data.Geo.GPX.Pt-import Text.XML.HXT.Arrow.Pickle--newtype Ptseg = Ptseg [Pt]-  deriving (Eq, Ord)--ptseg ::-  [Pt] -- ^ The points (pt).-  -> Ptseg-ptseg =-  Ptseg--runPtseg ::-  Ptseg-  -> [Pt]-runPtseg (Ptseg p) =-  p--instance XmlPickler Ptseg where-  xpickle =-    xpWrap (ptseg, \(Ptseg k) -> k) (xpList (xpElem "pt" xpickle))-
− src/Data/Geo/GPX/Rte.hs
@@ -1,88 +0,0 @@--- | Complex Type: @rteType@ <http://www.topografix.com/GPX/1/1/#type_rteType>-module Data.Geo.GPX.Rte(-  Rte-, rte-) where--import Data.Geo.GPX.Wpt-import Data.Geo.GPX.Extensions-import Data.Geo.GPX.Link-import Data.Geo.GPX.Lens.NameL-import Data.Geo.GPX.Lens.CmtL-import Data.Geo.GPX.Lens.DescL-import Data.Geo.GPX.Lens.SrcL-import Data.Geo.GPX.Lens.LinksL-import Data.Geo.GPX.Lens.NumberL-import Data.Geo.GPX.Lens.TypeL-import Data.Geo.GPX.Lens.ExtensionsL-import Data.Geo.GPX.Lens.RteptsL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Rte = Rte (Maybe String) (Maybe String) (Maybe String) (Maybe String) [Link] (Maybe Int) (Maybe String) (Maybe Extensions) [Wpt]-  deriving Eq--rte ::-  Maybe String -- ^ The name.-  -> Maybe String -- ^ The cmt.-  -> Maybe String -- ^ The desc.-  -> Maybe String -- ^ The src.-  -> [Link] -- ^ The links (link).-  -> Maybe Int -- ^ The number.-  -> Maybe String -- ^ The type.-  -> Maybe Extensions -- ^ The extensions.-  -> [Wpt] -- ^ The route points (rtept).-  -> Rte-rte a b c d e f =-  Rte a b c d e (fmap abs f)--instance NameL Rte where-  nameL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\name -> Rte name cmt desc src links number typ extensions rtepts) name--instance CmtL Rte where-  cmtL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\cmt -> Rte name cmt desc src links number typ extensions rtepts) cmt--instance DescL Rte where-  descL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\desc -> Rte name cmt desc src links number typ extensions rtepts) desc--instance SrcL Rte where-  srcL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\src -> Rte name cmt desc src links number typ extensions rtepts) src--instance LinksL Rte where-  linksL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\links -> Rte name cmt desc src links number typ extensions rtepts) links--instance NumberL Rte where-  numberL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\number -> Rte name cmt desc src links number typ extensions rtepts) number--instance TypeL Rte where-  typeL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\typ -> Rte name cmt desc src links number typ extensions rtepts) typ--instance ExtensionsL Rte where-  extensionsL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\extensions -> Rte name cmt desc src links number typ extensions rtepts) extensions--instance RteptsL Rte where-  rteptsL =-    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\rtepts -> Rte name cmt desc src links number typ extensions rtepts) rtepts--instance XmlPickler Rte where-  xpickle =-    xpWrap (\(a, b, c, d, e, f, g, h, i) -> rte a b c d e f g h i, \(Rte a b c d e f g h i) -> (a, b, c, d, e, f, g, h, i)) (xp9Tuple-           (xpOption (xpElem "name" xpText))-           (xpOption (xpElem "cmt" xpText))-           (xpOption (xpElem "desc" xpText))-           (xpOption (xpElem "src" xpText))-           (xpList (xpElem "link" xpickle))-           (xpOption (xpElem "number" xpPrim))-           (xpOption (xpElem "type" xpText))-           (xpOption (xpElem "extensions" xpickle))-           (xpList (xpElem "rtept" xpickle)))-
− src/Data/Geo/GPX/Trk.hs
@@ -1,88 +0,0 @@--- | Complex Type: @trkType@ <http://www.topografix.com/GPX/1/1/#type_trkType>-module Data.Geo.GPX.Trk(-  Trk-, trk-) where--import Data.Geo.GPX.Trkseg-import Data.Geo.GPX.Extensions-import Data.Geo.GPX.Link-import Data.Geo.GPX.Lens.NameL-import Data.Geo.GPX.Lens.CmtL-import Data.Geo.GPX.Lens.DescL-import Data.Geo.GPX.Lens.SrcL-import Data.Geo.GPX.Lens.LinksL-import Data.Geo.GPX.Lens.NumberL-import Data.Geo.GPX.Lens.TypeL-import Data.Geo.GPX.Lens.ExtensionsL-import Data.Geo.GPX.Lens.TrksegsL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Trk = Trk (Maybe String) (Maybe String) (Maybe String) (Maybe String) [Link] (Maybe Int) (Maybe String) (Maybe Extensions) [Trkseg]-  deriving Eq--trk ::-  Maybe String -- ^ The name.-  -> Maybe String -- ^ The cmt.-  -> Maybe String -- ^ The desc.-  -> Maybe String -- ^ The src.-  -> [Link] -- ^ The links (link).-  -> Maybe Int -- ^ The number.-  -> Maybe String -- ^ The type.-  -> Maybe Extensions -- ^ The extensions.-  -> [Trkseg] -- ^ The track segments (trkseg).-  -> Trk-trk a b c d e f =-  Trk a b c d e (fmap abs f)--instance NameL Trk where-  nameL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\name -> Trk name cmt desc src links number typ extensions trksegs) name--instance CmtL Trk where-  cmtL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\cmt -> Trk name cmt desc src links number typ extensions trksegs) cmt--instance DescL Trk where-  descL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\desc -> Trk name cmt desc src links number typ extensions trksegs) desc--instance SrcL Trk where-  srcL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\src -> Trk name cmt desc src links number typ extensions trksegs) src--instance LinksL Trk where-  linksL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\links -> Trk name cmt desc src links number typ extensions trksegs) links--instance NumberL Trk where-  numberL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\number -> Trk name cmt desc src links number typ extensions trksegs) number--instance TypeL Trk where-  typeL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\typ -> Trk name cmt desc src links number typ extensions trksegs) typ--instance ExtensionsL Trk where-  extensionsL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\extensions -> Trk name cmt desc src links number typ extensions trksegs) extensions--instance TrksegsL Trk where-  trksegsL =-    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\trksegs -> Trk name cmt desc src links number typ extensions trksegs) trksegs--instance XmlPickler Trk where-  xpickle =-    xpWrap (\(a, b, c, d, e, f, g, h, i) -> trk a b c d e f g h i, \(Trk a b c d e f g h i) -> (a, b, c, d, e, f, g, h, i)) (xp9Tuple-      (xpOption (xpElem "name" xpText))-      (xpOption (xpElem "cmt" xpText))-      (xpOption (xpElem "desc" xpText))-      (xpOption (xpElem "src" xpText))-      (xpList (xpElem "link" xpickle))-      (xpOption (xpElem "number" xpPrim))-      (xpOption (xpElem "type" xpText))-      (xpOption (xpElem "extensions" xpickle))-      (xpList (xpElem "trkseg" xpickle)))-
− src/Data/Geo/GPX/Trkseg.hs
@@ -1,38 +0,0 @@--- | Complex Type: @trksegType@ <http://www.topografix.com/GPX/1/1/#type_trksegType>-module Data.Geo.GPX.Trkseg(-  Trkseg,-  trkseg-) where--import Data.Geo.GPX.Wpt-import Data.Geo.GPX.Extensions-import Data.Geo.GPX.Lens.TrkptsL-import Data.Geo.GPX.Lens.ExtensionsL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle--data Trkseg = Trkseg [Wpt] (Maybe Extensions)-  deriving Eq--trkseg ::-  [Wpt] -- ^ The track points (trkpt).-  -> Maybe Extensions -- ^ The extensions.-  -> Trkseg-trkseg =-  Trkseg--instance TrkptsL Trkseg where-  trkptsL =-    Lens $ \(Trkseg trkpts extensions) -> store (\trkpts -> Trkseg trkpts extensions) trkpts--instance ExtensionsL Trkseg where-  extensionsL =-    Lens $ \(Trkseg trkpts extensions) -> store (\extensions -> Trkseg trkpts extensions) extensions--instance XmlPickler Trkseg where-  xpickle =-    xpWrap (uncurry trkseg, \(Trkseg trkpt' extensions') -> (trkpt', extensions')) (xpPair-      (xpList (xpElem "trkpt" xpickle))-      (xpOption (xpElem "extensions" xpickle)))-
+ src/Data/Geo/GPX/Type.hs view
@@ -0,0 +1,43 @@+-- | GPX 1.1 Schema <http://www.topografix.com/GPX/1/1/>+module Data.Geo.GPX.Type(+  module Data.Geo.GPX.Type.DgpsStation+, module Data.Geo.GPX.Type.Fix+, module Data.Geo.GPX.Type.Degrees+, module Data.Geo.GPX.Type.Longitude+, module Data.Geo.GPX.Type.Latitude+, module Data.Geo.GPX.Type.Bounds+, module Data.Geo.GPX.Type.Extensions+, module Data.Geo.GPX.Type.Pt+, module Data.Geo.GPX.Type.Ptseg+, module Data.Geo.GPX.Type.Email+, module Data.Geo.GPX.Type.Link+, module Data.Geo.GPX.Type.Person+, module Data.Geo.GPX.Type.Copyright+, module Data.Geo.GPX.Type.Wpt+, module Data.Geo.GPX.Type.Trkseg+, module Data.Geo.GPX.Type.Trk+, module Data.Geo.GPX.Type.Rte+, module Data.Geo.GPX.Type.Metadata+, module Data.Geo.GPX.Type.Gpx+) where++import Data.Geo.GPX.Type.DgpsStation+import Data.Geo.GPX.Type.Fix+import Data.Geo.GPX.Type.Degrees+import Data.Geo.GPX.Type.Longitude+import Data.Geo.GPX.Type.Latitude+import Data.Geo.GPX.Type.Bounds+import Data.Geo.GPX.Type.Extensions+import Data.Geo.GPX.Type.Pt+import Data.Geo.GPX.Type.Ptseg+import Data.Geo.GPX.Type.Email+import Data.Geo.GPX.Type.Link+import Data.Geo.GPX.Type.Person+import Data.Geo.GPX.Type.Copyright+import Data.Geo.GPX.Type.Wpt+import Data.Geo.GPX.Type.Trkseg+import Data.Geo.GPX.Type.Trk+import Data.Geo.GPX.Type.Rte+import Data.Geo.GPX.Type.Metadata+import Data.Geo.GPX.Type.Gpx+
+ src/Data/Geo/GPX/Type/Bounds.hs view
@@ -0,0 +1,51 @@+-- | Complex Type: @boundsType@ <http://www.topografix.com/GPX/1/1/#type_boundsType>+module Data.Geo.GPX.Type.Bounds(+  Bounds+, bounds+) where++import Data.Geo.GPX.Type.Latitude+import Data.Geo.GPX.Type.Longitude+import Data.Geo.GPX.Lens.MinlatL+import Data.Geo.GPX.Lens.MaxlatL+import Data.Geo.GPX.Lens.MinlonL+import Data.Geo.GPX.Lens.MaxlonL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Bounds = Bounds (Latitude, Longitude) (Latitude, Longitude)+  deriving (Eq, Ord)++bounds :: +  (Latitude, Longitude) -- ^ The minimum latitude and longitude.+  -> (Latitude, Longitude) -- ^ The maximum latitude and longitude.+  -> Bounds+bounds =+  Bounds++instance MinlatL Bounds where+  minlatL =+    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\minlat -> Bounds (minlat, minlon) (maxlat, maxlon)) minlat++instance MinlonL Bounds where+  minlonL =+    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\minlon -> Bounds (minlat, minlon) (maxlat, maxlon)) minlon++instance MaxlatL Bounds where+  maxlatL =+    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\maxlat -> Bounds (minlat, minlon) (maxlat, maxlon)) maxlat++instance MaxlonL Bounds where+  maxlonL =+    Lens $ \(Bounds (minlat, minlon) (maxlat, maxlon)) -> store (\maxlon -> Bounds (minlat, minlon) (maxlat, maxlon)) maxlon++instance XmlPickler Bounds where+  xpickle =+    xpWrap (\(minlat', minlon', maxlat', maxlon') -> bounds (minlat', minlon') (maxlat', maxlon'),+            \(Bounds (minlat', minlon') (maxlat', maxlon')) -> (minlat', minlon', maxlat', maxlon')) (xp4Tuple+              (xpAttr "minlat" xpickle)+              (xpAttr "minlon" xpickle)+              (xpAttr "maxlat" xpickle)+              (xpAttr "maxlon" xpickle))+
+ src/Data/Geo/GPX/Type/Copyright.hs view
@@ -0,0 +1,44 @@+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}++-- | Complex Type: @copyrightType@ <http://www.topografix.com/GPX/1/1/#type_copyrightType>+module Data.Geo.GPX.Type.Copyright(+  Copyright+, copyright+) where++import Data.Geo.GPX.Lens.AuthorL+import Data.Geo.GPX.Lens.YearL+import Data.Geo.GPX.Lens.LicenseL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Copyright = Copyright String (Maybe String) (Maybe String)+  deriving (Eq, Ord)++copyright+  :: String -- ^ The author.+  -> Maybe String -- ^ The year.+  -> Maybe String -- ^ The license.+  -> Copyright+copyright =+  Copyright++instance AuthorL Copyright String where+  authorL =+    Lens $ \(Copyright author year license) -> store (\author -> Copyright author year license) author++instance YearL Copyright where+  yearL =+    Lens $ \(Copyright author year license) -> store (\year -> Copyright author year license) year++instance LicenseL Copyright where+  licenseL =+    Lens $ \(Copyright author year license) -> store (\license -> Copyright author year license) license++instance XmlPickler Copyright where+  xpickle =+    xpWrap (\(author', year', license') -> copyright author' year' license', \(Copyright author' year' license') -> (author', year', license')) (xpTriple+           (xpAttr "author" xpText)+           (xpOption (xpElem "year" xpText))+           (xpOption (xpElem "license" xpText)))
+ src/Data/Geo/GPX/Type/Degrees.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}++-- | Simple Type: @degreesType@ <http://www.topografix.com/GPX/1/1/#type_degreesType>+module Data.Geo.GPX.Type.Degrees(+  Degrees+, degrees+, runDegrees+) where+++import Data.Fixed+import Text.XML.HXT.Arrow.Pickle+import Control.Newtype++newtype Degrees = Degrees Double+  deriving (Eq, Ord, Show)++degrees ::+  Double -- ^ The value which will be between 0 and 360 (values out of the range are truncated using a modulus operation).+  -> Degrees+degrees n =+  Degrees (n `mod'` 360)++runDegrees ::+  Degrees+  -> Double+runDegrees (Degrees d) =+  d++instance XmlPickler Degrees where+  xpickle =+    xpWrap (degrees, \(Degrees n) -> n) xpPrim++instance Newtype Degrees Double where+  pack = +    degrees+  unpack (Degrees x) =+    x+
+ src/Data/Geo/GPX/Type/DgpsStation.hs view
@@ -0,0 +1,33 @@+-- | Simple Type: @dgpsStationType@ <http://www.topografix.com/GPX/1/1/#type_dgpsStationType>+module Data.Geo.GPX.Type.DgpsStation(+  DgpsStation+, dgpsStation+, runDgpsStation+) where++import Data.Ix+import Text.XML.HXT.Arrow.Pickle++newtype DgpsStation = DgpsStation Int+  deriving (Eq, Ord)++dgpsStation ::+  Int -- ^ The value between 0 and 1023.+  -> Maybe DgpsStation+dgpsStation n =+  if inRange (0, 1023) n+    then+      Just (DgpsStation n)+    else+      Nothing++runDgpsStation ::+  DgpsStation+  -> Int+runDgpsStation (DgpsStation i) =+  i++instance XmlPickler DgpsStation where+  xpickle =+    xpWrapMaybe (dgpsStation, \(DgpsStation n) -> n) xpickle+
+ src/Data/Geo/GPX/Type/Email.hs view
@@ -0,0 +1,36 @@+-- | Complex Type: @emailType@ <http://www.topografix.com/GPX/1/1/#type_emailType>+module Data.Geo.GPX.Type.Email(+  Email+, email+) where++import Data.Geo.GPX.Lens.IdL+import Data.Geo.GPX.Lens.DomainL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Email = Email String String+  deriving (Eq, Ord)++email ::+  String -- ^ The id.+  -> String -- ^ The domain.+  -> Email+email =+  Email++instance IdL Email where+  idL =+    Lens $ \(Email id domain) -> store (\id -> Email id domain) id++instance DomainL Email where+  domainL =+    Lens $ \(Email id domain) -> store (\domain -> Email id domain) domain++instance XmlPickler Email where+  xpickle =+    xpWrap (uncurry email, \(Email id' domain') -> (id', domain'))+           (xpPair (xpAttr "id" xpText) (xpAttr "domain" xpText))++
+ src/Data/Geo/GPX/Type/Extensions.hs view
@@ -0,0 +1,38 @@+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances #-}++-- | Complex Type: @extensionsType@ <http://www.topografix.com/GPX/1/1/#type_extensionsType>+module Data.Geo.GPX.Type.Extensions(+  Extensions+, extensions+, runExtensions+) where++import Text.XML.HXT.Arrow.Pickle+import Text.XML.HXT.DOM.TypeDefs+import Control.Newtype++newtype Extensions = Extensions XmlTrees+  deriving (Eq, Show)++extensions :: +  XmlTrees+  -> Extensions+extensions =+  Extensions++runExtensions ::+  Extensions+  -> XmlTrees+runExtensions (Extensions t) =+  t++instance XmlPickler Extensions where+  xpickle =+    xpWrap (Extensions, \(Extensions t) -> t) xpTrees++instance Newtype Extensions XmlTrees where+  pack = +    Extensions+  unpack (Extensions x) =+    x+
+ src/Data/Geo/GPX/Type/Fix.hs view
@@ -0,0 +1,76 @@+-- | Simple Type: @fixType@ <http://www.topografix.com/GPX/1/1/#type_fixType>+module Data.Geo.GPX.Type.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++
+ src/Data/Geo/GPX/Type/Gpx.hs view
@@ -0,0 +1,82 @@+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}++-- | Complex Type: @gpxType@ <http://www.topografix.com/GPX/1/1/#type_gpxType>+module Data.Geo.GPX.Type.Gpx(+  Gpx+, GpxP(..)+) where++import Data.Geo.GPX.Type.Metadata+import Data.Geo.GPX.Type.Wpt+import Data.Geo.GPX.Type.Rte+import Data.Geo.GPX.Type.Trk+import Data.Geo.GPX.Type.Extensions+import Data.Geo.GPX.Lens.VersionL+import Data.Geo.GPX.Lens.CreatorL+import Data.Geo.GPX.Lens.MetadataL+import Data.Geo.GPX.Lens.WptsL+import Data.Geo.GPX.Lens.RtesL+import Data.Geo.GPX.Lens.TrksL+import Data.Geo.GPX.Lens.ExtensionsL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Gpx = Gpx String String (Maybe Metadata) [Wpt] [Rte] [Trk] (Maybe Extensions)+  deriving Eq++class GpxP g where+  gpx ::+    String -- ^ The version.+    -> String -- ^ The creator.+    -> Maybe Metadata -- ^ The metadata.+    -> [Wpt] -- ^ The waypoints (wpt).+    -> [Rte] -- ^ The routes (rte).+    -> [Trk] -- ^ The tracks (trk).+    -> Maybe Extensions -- ^ The extensions.+    -> g++instance GpxP Gpx where+  gpx =+    Gpx++instance VersionL Gpx where+  versionL =+    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\version -> Gpx version creator metadata wpts rtes trks extensions) version++instance CreatorL Gpx where+  creatorL =+    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\creator -> Gpx version creator metadata wpts rtes trks extensions) creator++instance MetadataL Gpx where+  metadataL =+    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\metadata -> Gpx version creator metadata wpts rtes trks extensions) metadata++instance WptsL Gpx where+  wptsL =+    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\wpts -> Gpx version creator metadata wpts rtes trks extensions) wpts++instance RtesL Gpx where+  rtesL =+    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\rtes -> Gpx version creator metadata wpts rtes trks extensions) rtes++instance TrksL Gpx where+  trksL =+    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\trks -> Gpx version creator metadata wpts rtes trks extensions) trks++instance ExtensionsL Gpx where+  extensionsL =+    Lens $ \(Gpx version creator metadata wpts rtes trks extensions) -> store (\extensions -> Gpx version creator metadata wpts rtes trks extensions) extensions++instance XmlPickler Gpx where+  xpickle =+    xpWrap (\(version', creator', metadata', wpt', rte', trk', extensions') -> gpx version' creator' metadata' wpt' rte' trk' extensions',+              \(Gpx version' creator' metadata' wpt' rte' trk' extensions') -> (version', creator', metadata', wpt', rte', trk', extensions')) (xp7Tuple+                (xpAttr "version" xpText)+                (xpAttr "creator" xpText)+                (xpOption (xpElem "metadata" xpickle))+                (xpList (xpElem "wpt" xpickle))+                (xpList (xpElem "rte" xpickle))+                (xpList (xpElem "trk" xpickle))+                (xpOption (xpElem "extensions" xpickle)))+
+ src/Data/Geo/GPX/Type/Latitude.hs view
@@ -0,0 +1,40 @@+{-# LANGUAGE GeneralizedNewtypeDeriving, FlexibleInstances, MultiParamTypeClasses #-}++-- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType>+module Data.Geo.GPX.Type.Latitude(+  Latitude+, latitude+, runLatitude+) where++import Data.Fixed+import Text.XML.HXT.Arrow.Pickle+import Control.Newtype++newtype Latitude = Latitude Double+  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)++latitude ::+  Double -- ^ The value which will be between -90 and 90 (values out of the range are truncated using a modulus operation).+  -> Latitude+latitude n =+  Latitude ((n + 90) `mod'` 180 - 90)++runLatitude ::+  Latitude+  -> Double+runLatitude (Latitude d) =+  d++instance Show Latitude where+  show (Latitude n) = show n++instance XmlPickler Latitude where+  xpickle = xpWrap (latitude, \(Latitude n) -> n) xpPrim++instance Newtype Latitude Double where+  pack = +    latitude+  unpack (Latitude x) =+    x+
+ src/Data/Geo/GPX/Type/Link.hs view
@@ -0,0 +1,43 @@+-- | Complex Type: @linkType@ <http://www.topografix.com/GPX/1/1/#type_linkType>+module Data.Geo.GPX.Type.Link(+  Link+, link+) where++import Data.Geo.GPX.Lens.HrefL+import Data.Geo.GPX.Lens.TextL+import Data.Geo.GPX.Lens.TypeL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Link = Link String (Maybe String) (Maybe String)+  deriving (Eq, Ord)++link ::+  String -- ^ The href.+  -> Maybe String -- ^ The text.+  -> Maybe String -- ^ The type.+  -> Link+link =+  Link++instance HrefL Link where+  hrefL =+    Lens $ \(Link href text typ) -> store (\href -> Link href text typ) href++instance TextL Link where+  textL =+    Lens $ \(Link href text typ) -> store (\text -> Link href text typ) text++instance TypeL Link where+  typeL =+    Lens $ \(Link href text typ) -> store (\typ -> Link href text typ) typ++instance XmlPickler Link where+  xpickle =+    xpWrap (\(href, text, type') -> link href text type', \(Link href text type') -> (href, text, type')) (xpTriple+           (xpAttr "href" xpText)+           (xpOption (xpElem "text" xpText))+           (xpOption (xpElem "type" xpText)))+
+ src/Data/Geo/GPX/Type/Longitude.hs view
@@ -0,0 +1,40 @@+{-# LANGUAGE GeneralizedNewtypeDeriving, FlexibleInstances, MultiParamTypeClasses #-}++-- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType>+module Data.Geo.GPX.Type.Longitude(+  Longitude+, longitude+, runLongitude+) where++import Data.Fixed+import Text.XML.HXT.Arrow.Pickle+import Control.Newtype++newtype Longitude = Longitude Double+  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)++longitude ::+  Double -- ^ The value which will be between -180 and 180 (values out of the range are truncated using a modulus operation).+  -> Longitude+longitude n =+  Longitude ((n + 180) `mod'` 360 - 180)++runLongitude ::+  Longitude+  -> Double+runLongitude (Longitude d) =+  d++instance Show Longitude where+  show (Longitude n) = show n++instance XmlPickler Longitude where+  xpickle = xpWrap (longitude, \(Longitude n) -> n) xpPrim++instance Newtype Longitude Double where+  pack = +    longitude+  unpack (Longitude x) =+    x+
+ src/Data/Geo/GPX/Type/Metadata.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}++-- | Complex Type: @metadataType@ <http://www.topografix.com/GPX/1/1/#type_metadataType>+module Data.Geo.GPX.Type.Metadata(+  Metadata+, metadata+) where++import Data.Geo.GPX.Type.Person+import Data.Geo.GPX.Type.Copyright+import Data.Geo.GPX.Type.Link+import Data.Geo.GPX.Type.Bounds+import Data.Geo.GPX.Type.Extensions+import Data.Geo.GPX.Lens.NameL+import Data.Geo.GPX.Lens.DescL+import Data.Geo.GPX.Lens.AuthorL+import Data.Geo.GPX.Lens.CopyrightL+import Data.Geo.GPX.Lens.LinksL+import Data.Geo.GPX.Lens.TimeL+import Data.Geo.GPX.Lens.KeywordsL+import Data.Geo.GPX.Lens.BoundsL+import Data.Geo.GPX.Lens.ExtensionsL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle+import Text.XML.XSD.DateTime++data Metadata = Metadata (Maybe String) (Maybe String) (Maybe Person) (Maybe Copyright) [Link] (Maybe DateTime) (Maybe String) (Maybe Bounds) (Maybe Extensions)+  deriving Eq++metadata ::+  Maybe String -- ^ The name.+  -> Maybe String -- ^ The desc.+  -> Maybe Person -- ^ The author.+  -> Maybe Copyright -- ^ The copyright.+  -> [Link] -- ^ The links (link).+  -> Maybe DateTime -- ^ The time.+  -> Maybe String -- ^ The keywords.+  -> Maybe Bounds -- ^ The bounds.+  -> Maybe Extensions -- ^ The extensions+  -> Metadata+metadata =+  Metadata++instance NameL Metadata where+  nameL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\name -> Metadata name desc author copyright links time keywords bounds extensions) name++instance DescL Metadata where+  descL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\desc -> Metadata name desc author copyright links time keywords bounds extensions) desc++instance AuthorL Metadata (Maybe Person) where+  authorL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\author -> Metadata name desc author copyright links time keywords bounds extensions) author++instance CopyrightL Metadata where+  copyrightL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\copyright -> Metadata name desc author copyright links time keywords bounds extensions) copyright++instance LinksL Metadata where+  linksL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\links -> Metadata name desc author copyright links time keywords bounds extensions) links++instance TimeL Metadata where+  timeL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\time -> Metadata name desc author copyright links time keywords bounds extensions) time++instance KeywordsL Metadata where+  keywordsL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\keywords -> Metadata name desc author copyright links time keywords bounds extensions) keywords++instance BoundsL Metadata where+  boundsL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\bounds -> Metadata name desc author copyright links time keywords bounds extensions) bounds++instance ExtensionsL Metadata where+  extensionsL =+    Lens $ \(Metadata name desc author copyright links time keywords bounds extensions) -> store (\extensions -> Metadata name desc author copyright links time keywords bounds extensions) extensions++instance XmlPickler Metadata where+  xpickle =+    xpWrap (\(a, b, c, d, e, f, g, h, i) -> metadata a b c d e f g h i, \(Metadata a b c d e f g h i) -> (a, b, c, d, e, f, g, h, i)) (xp9Tuple+           (xpOption (xpElem "name" xpText))+           (xpOption (xpElem "desc" xpText))+           (xpOption (xpElem "author" xpickle))+           (xpOption (xpElem "copyright" xpickle))+           (xpList (xpElem "link" xpickle))+           (xpOption (xpElem "time" (xpWrapMaybe (dateTime, show) xpText)))+           (xpOption (xpElem "keywords" xpText))+           (xpOption (xpElem "bounds" xpickle))+           (xpOption (xpElem "extensions" xpickle)))++
+ src/Data/Geo/GPX/Type/Person.hs view
@@ -0,0 +1,45 @@+-- | Complex Type: @personType@ <http://www.topografix.com/GPX/1/1/#type_personType>+module Data.Geo.GPX.Type.Person(+  Person+, person+) where++import Data.Geo.GPX.Type.Email+import Data.Geo.GPX.Type.Link+import Data.Geo.GPX.Lens.NameL+import Data.Geo.GPX.Lens.EmailL+import Data.Geo.GPX.Lens.LinkL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Person = Person (Maybe String) (Maybe Email) (Maybe Link)+  deriving (Eq, Ord)++person ::+  Maybe String -- ^ The name.+  -> Maybe Email -- ^ The email.+  -> Maybe Link -- ^ The link.+  -> Person+person =+  Person++instance NameL Person where+  nameL =+    Lens $ \(Person name email link) -> store (\name -> Person name email link) name++instance EmailL Person where+  emailL =+    Lens $ \(Person name email link) -> store (\email -> Person name email link) email++instance LinkL Person where+  linkL =+    Lens $ \(Person name email link) -> store (\link -> Person name email link) link++instance XmlPickler Person where+  xpickle =+    xpWrap (\(name', email', link') -> person name' email' link', \(Person name' email' link') -> (name', email', link')) (xpTriple+           (xpOption (xpElem "name" xpText))+           (xpOption (xpElem "email" xpickle))+           (xpOption (xpElem "link" xpickle)))+
+ src/Data/Geo/GPX/Type/Pt.hs view
@@ -0,0 +1,54 @@+-- | Complex Type: @ptType@ <http://www.topografix.com/GPX/1/1/#type_ptType>+module Data.Geo.GPX.Type.Pt(+  Pt+, pt+) where++import Data.Geo.GPX.Type.Latitude+import Data.Geo.GPX.Type.Longitude+import Data.Geo.GPX.Lens.LatL+import Data.Geo.GPX.Lens.LonL+import Data.Geo.GPX.Lens.EleL+import Data.Geo.GPX.Lens.TimeL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle+import Text.XML.XSD.DateTime++data Pt = Pt Latitude Longitude (Maybe Double) (Maybe DateTime)+  deriving (Eq, Ord)++pt ::+  Latitude -- ^ The lat.+  -> Longitude -- ^ The lon.+  -> Maybe Double -- ^ The ele.+  -> Maybe DateTime -- ^ The time.+  -> Pt+pt =+  Pt++instance LatL Pt where+  latL =+    Lens $ \(Pt lat lon ele time) -> store (\lat -> Pt lat lon ele time) lat++instance LonL Pt where+  lonL =+    Lens $ \(Pt lat lon ele time) -> store (\lon -> Pt lat lon ele time) lon++instance EleL Pt where+  eleL =+    Lens $ \(Pt lat lon ele time) -> store (\ele -> Pt lat lon ele time) ele++instance TimeL Pt where+  timeL =+    Lens $ \(Pt lat lon ele time) -> store (\time -> Pt lat lon ele time) time++instance XmlPickler Pt where+  xpickle =+    xpWrap (\(lat', lon', ele', time') -> pt lat' lon' ele' time',+           \(Pt lat' lon' ele' time') -> (lat', lon', ele', time')) (xp4Tuple+             (xpAttr "lat" xpickle)+             (xpAttr "lon" xpickle)+             (xpOption (xpElem "ele" xpPrim))+             (xpOption (xpElem "time" (xpWrapMaybe (dateTime, show) xpText))))+
+ src/Data/Geo/GPX/Type/Ptseg.hs view
@@ -0,0 +1,38 @@+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}++-- | Complex Type: @ptsegType@ <http://www.topografix.com/GPX/1/1/#type_ptsegType>+module Data.Geo.GPX.Type.Ptseg(+  Ptseg+, ptseg+, runPtseg+) where++import Data.Geo.GPX.Type.Pt+import Text.XML.HXT.Arrow.Pickle+import Control.Newtype++newtype Ptseg = Ptseg [Pt]+  deriving (Eq, Ord)++ptseg ::+  [Pt] -- ^ The points (pt).+  -> Ptseg+ptseg =+  Ptseg++runPtseg ::+  Ptseg+  -> [Pt]+runPtseg (Ptseg p) =+  p++instance XmlPickler Ptseg where+  xpickle =+    xpWrap (ptseg, \(Ptseg k) -> k) (xpList (xpElem "pt" xpickle))++instance Newtype Ptseg [Pt] where+  pack = +    Ptseg+  unpack (Ptseg x) =+    x+
+ src/Data/Geo/GPX/Type/Rte.hs view
@@ -0,0 +1,88 @@+-- | Complex Type: @rteType@ <http://www.topografix.com/GPX/1/1/#type_rteType>+module Data.Geo.GPX.Type.Rte(+  Rte+, rte+) where++import Data.Geo.GPX.Type.Wpt+import Data.Geo.GPX.Type.Extensions+import Data.Geo.GPX.Type.Link+import Data.Geo.GPX.Lens.NameL+import Data.Geo.GPX.Lens.CmtL+import Data.Geo.GPX.Lens.DescL+import Data.Geo.GPX.Lens.SrcL+import Data.Geo.GPX.Lens.LinksL+import Data.Geo.GPX.Lens.NumberL+import Data.Geo.GPX.Lens.TypeL+import Data.Geo.GPX.Lens.ExtensionsL+import Data.Geo.GPX.Lens.RteptsL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Rte = Rte (Maybe String) (Maybe String) (Maybe String) (Maybe String) [Link] (Maybe Int) (Maybe String) (Maybe Extensions) [Wpt]+  deriving Eq++rte ::+  Maybe String -- ^ The name.+  -> Maybe String -- ^ The cmt.+  -> Maybe String -- ^ The desc.+  -> Maybe String -- ^ The src.+  -> [Link] -- ^ The links (link).+  -> Maybe Int -- ^ The number.+  -> Maybe String -- ^ The type.+  -> Maybe Extensions -- ^ The extensions.+  -> [Wpt] -- ^ The route points (rtept).+  -> Rte+rte a b c d e f =+  Rte a b c d e (fmap abs f)++instance NameL Rte where+  nameL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\name -> Rte name cmt desc src links number typ extensions rtepts) name++instance CmtL Rte where+  cmtL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\cmt -> Rte name cmt desc src links number typ extensions rtepts) cmt++instance DescL Rte where+  descL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\desc -> Rte name cmt desc src links number typ extensions rtepts) desc++instance SrcL Rte where+  srcL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\src -> Rte name cmt desc src links number typ extensions rtepts) src++instance LinksL Rte where+  linksL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\links -> Rte name cmt desc src links number typ extensions rtepts) links++instance NumberL Rte where+  numberL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\number -> Rte name cmt desc src links number typ extensions rtepts) number++instance TypeL Rte where+  typeL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\typ -> Rte name cmt desc src links number typ extensions rtepts) typ++instance ExtensionsL Rte where+  extensionsL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\extensions -> Rte name cmt desc src links number typ extensions rtepts) extensions++instance RteptsL Rte where+  rteptsL =+    Lens $ \(Rte name cmt desc src links number typ extensions rtepts) -> store (\rtepts -> Rte name cmt desc src links number typ extensions rtepts) rtepts++instance XmlPickler Rte where+  xpickle =+    xpWrap (\(a, b, c, d, e, f, g, h, i) -> rte a b c d e f g h i, \(Rte a b c d e f g h i) -> (a, b, c, d, e, f, g, h, i)) (xp9Tuple+           (xpOption (xpElem "name" xpText))+           (xpOption (xpElem "cmt" xpText))+           (xpOption (xpElem "desc" xpText))+           (xpOption (xpElem "src" xpText))+           (xpList (xpElem "link" xpickle))+           (xpOption (xpElem "number" xpPrim))+           (xpOption (xpElem "type" xpText))+           (xpOption (xpElem "extensions" xpickle))+           (xpList (xpElem "rtept" xpickle)))+
+ src/Data/Geo/GPX/Type/Trk.hs view
@@ -0,0 +1,88 @@+-- | Complex Type: @trkType@ <http://www.topografix.com/GPX/1/1/#type_trkType>+module Data.Geo.GPX.Type.Trk(+  Trk+, trk+) where++import Data.Geo.GPX.Type.Trkseg+import Data.Geo.GPX.Type.Extensions+import Data.Geo.GPX.Type.Link+import Data.Geo.GPX.Lens.NameL+import Data.Geo.GPX.Lens.CmtL+import Data.Geo.GPX.Lens.DescL+import Data.Geo.GPX.Lens.SrcL+import Data.Geo.GPX.Lens.LinksL+import Data.Geo.GPX.Lens.NumberL+import Data.Geo.GPX.Lens.TypeL+import Data.Geo.GPX.Lens.ExtensionsL+import Data.Geo.GPX.Lens.TrksegsL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Trk = Trk (Maybe String) (Maybe String) (Maybe String) (Maybe String) [Link] (Maybe Int) (Maybe String) (Maybe Extensions) [Trkseg]+  deriving Eq++trk ::+  Maybe String -- ^ The name.+  -> Maybe String -- ^ The cmt.+  -> Maybe String -- ^ The desc.+  -> Maybe String -- ^ The src.+  -> [Link] -- ^ The links (link).+  -> Maybe Int -- ^ The number.+  -> Maybe String -- ^ The type.+  -> Maybe Extensions -- ^ The extensions.+  -> [Trkseg] -- ^ The track segments (trkseg).+  -> Trk+trk a b c d e f =+  Trk a b c d e (fmap abs f)++instance NameL Trk where+  nameL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\name -> Trk name cmt desc src links number typ extensions trksegs) name++instance CmtL Trk where+  cmtL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\cmt -> Trk name cmt desc src links number typ extensions trksegs) cmt++instance DescL Trk where+  descL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\desc -> Trk name cmt desc src links number typ extensions trksegs) desc++instance SrcL Trk where+  srcL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\src -> Trk name cmt desc src links number typ extensions trksegs) src++instance LinksL Trk where+  linksL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\links -> Trk name cmt desc src links number typ extensions trksegs) links++instance NumberL Trk where+  numberL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\number -> Trk name cmt desc src links number typ extensions trksegs) number++instance TypeL Trk where+  typeL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\typ -> Trk name cmt desc src links number typ extensions trksegs) typ++instance ExtensionsL Trk where+  extensionsL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\extensions -> Trk name cmt desc src links number typ extensions trksegs) extensions++instance TrksegsL Trk where+  trksegsL =+    Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\trksegs -> Trk name cmt desc src links number typ extensions trksegs) trksegs++instance XmlPickler Trk where+  xpickle =+    xpWrap (\(a, b, c, d, e, f, g, h, i) -> trk a b c d e f g h i, \(Trk a b c d e f g h i) -> (a, b, c, d, e, f, g, h, i)) (xp9Tuple+      (xpOption (xpElem "name" xpText))+      (xpOption (xpElem "cmt" xpText))+      (xpOption (xpElem "desc" xpText))+      (xpOption (xpElem "src" xpText))+      (xpList (xpElem "link" xpickle))+      (xpOption (xpElem "number" xpPrim))+      (xpOption (xpElem "type" xpText))+      (xpOption (xpElem "extensions" xpickle))+      (xpList (xpElem "trkseg" xpickle)))+
+ src/Data/Geo/GPX/Type/Trkseg.hs view
@@ -0,0 +1,38 @@+-- | Complex Type: @trksegType@ <http://www.topografix.com/GPX/1/1/#type_trksegType>+module Data.Geo.GPX.Type.Trkseg(+  Trkseg,+  trkseg+) where++import Data.Geo.GPX.Type.Wpt+import Data.Geo.GPX.Type.Extensions+import Data.Geo.GPX.Lens.TrkptsL+import Data.Geo.GPX.Lens.ExtensionsL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle++data Trkseg = Trkseg [Wpt] (Maybe Extensions)+  deriving Eq++trkseg ::+  [Wpt] -- ^ The track points (trkpt).+  -> Maybe Extensions -- ^ The extensions.+  -> Trkseg+trkseg =+  Trkseg++instance TrkptsL Trkseg where+  trkptsL =+    Lens $ \(Trkseg trkpts extensions) -> store (\trkpts -> Trkseg trkpts extensions) trkpts++instance ExtensionsL Trkseg where+  extensionsL =+    Lens $ \(Trkseg trkpts extensions) -> store (\extensions -> Trkseg trkpts extensions) extensions++instance XmlPickler Trkseg where+  xpickle =+    xpWrap (uncurry trkseg, \(Trkseg trkpt' extensions') -> (trkpt', extensions')) (xpPair+      (xpList (xpElem "trkpt" xpickle))+      (xpOption (xpElem "extensions" xpickle)))+
+ src/Data/Geo/GPX/Type/Wpt.hs view
@@ -0,0 +1,230 @@+-- | Complex Type: @wptType@ <http://www.topografix.com/GPX/1/1/#type_wptType>+module Data.Geo.GPX.Type.Wpt(+  Wpt+, wpt+, wpt'+) where++import Data.Geo.GPX.Type.Latitude+import Data.Geo.GPX.Type.Longitude+import Data.Geo.GPX.Type.Degrees+import Data.Geo.GPX.Type.Link+import Data.Geo.GPX.Type.Fix+import Data.Geo.GPX.Type.DgpsStation+import Data.Geo.GPX.Type.Extensions+import Data.Geo.GPX.Lens.LatL+import Data.Geo.GPX.Lens.LonL+import Data.Geo.GPX.Lens.EleL+import Data.Geo.GPX.Lens.TimeL+import Data.Geo.GPX.Lens.MagvarL+import Data.Geo.GPX.Lens.GeoidheightL+import Data.Geo.GPX.Lens.NameL+import Data.Geo.GPX.Lens.CmtL+import Data.Geo.GPX.Lens.DescL+import Data.Geo.GPX.Lens.SrcL+import Data.Geo.GPX.Lens.LinksL+import Data.Geo.GPX.Lens.SymL+import Data.Geo.GPX.Lens.TypeL+import Data.Geo.GPX.Lens.FixL+import Data.Geo.GPX.Lens.SatL+import Data.Geo.GPX.Lens.HdopL+import Data.Geo.GPX.Lens.VdopL+import Data.Geo.GPX.Lens.PdopL+import Data.Geo.GPX.Lens.AgeofdgpsdataL+import Data.Geo.GPX.Lens.DgpsidL+import Data.Geo.GPX.Lens.ExtensionsL+import Data.Lens.Common+import Control.Comonad.Trans.Store+import Text.XML.HXT.Arrow.Pickle+import Text.XML.XSD.DateTime++data Wpt =+  Wpt+    Latitude+    Longitude+    (Maybe Double)+    (Maybe DateTime)+    (Maybe Degrees)+    (Maybe Double)+    (Maybe String)+    (Maybe String)+    (Maybe String)+    (Maybe String)+    [Link]+    (Maybe String)+    (Maybe String)+    (Maybe Fix)+    (Maybe Int)+    (Maybe Double)+    (Maybe Double)+    (Maybe Double)+    (Maybe Double)+    (Maybe DgpsStation)+    (Maybe Extensions)+  deriving Eq++wpt ::+  Latitude -- ^ The lat.+  -> Longitude -- ^ The lon.+  -> Maybe Double -- ^ The ele.+  -> Maybe DateTime -- ^ The time.+  -> Maybe Degrees -- ^ The magvar.+  -> Maybe Double -- ^ The geoidheight.+  -> Maybe String -- ^ The name.+  -> Maybe String -- ^ The cmt.+  -> Maybe String -- ^ The desc.+  -> Maybe String -- ^ The src.+  -> [Link] -- ^ The links (link).+  -> Maybe String -- ^ The sym.+  -> Maybe String -- ^ The type.+  -> Maybe Fix -- ^ The fix.+  -> Maybe Int -- ^ The sat.+  -> Maybe Double -- ^ The hdop.+  -> Maybe Double -- ^ The vdop.+  -> Maybe Double -- ^ The pdop.+  -> Maybe Double -- ^ The ageofdgpsdata.+  -> Maybe DgpsStation -- ^ The dgpsid.+  -> Maybe Extensions -- ^ The extensions.+  -> Wpt+wpt a b c d e f g h i j k l m n o p =+  Wpt a b c d e f g h i j k l m n o (fmap abs p)++-- | A waypoint with only a latitude and longitude.+wpt' ::+  Latitude -- ^ The lat.+  -> Longitude -- ^ The lon.+  -> Wpt+wpt' lat' lon' =+  wpt+    lat'+    lon'+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    []+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing+    Nothing++instance LatL Wpt where+  latL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\lat -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) lat++instance LonL Wpt where+  lonL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\lon -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) lon++instance EleL Wpt where+  eleL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\ele -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) ele++instance TimeL Wpt where+  timeL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\time -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) time++instance MagvarL Wpt where+  magvarL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\magvar -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) magvar++instance GeoidheightL Wpt where+  geoidheightL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\geoidheight -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) geoidheight++instance NameL Wpt where+  nameL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\name -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) name++instance CmtL Wpt where+  cmtL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\cmt -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) cmt++instance DescL Wpt where+  descL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\desc -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) desc++instance SrcL Wpt where+  srcL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\src -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) src++instance LinksL Wpt where+  linksL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\links -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) links++instance SymL Wpt where+  symL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\sym -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) sym++instance TypeL Wpt where+  typeL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\typ -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) typ++instance FixL Wpt where+  fixL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\fix -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) fix++instance SatL Wpt where+  satL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\sat -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) sat++instance HdopL Wpt where+  hdopL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\hdop -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) hdop++instance VdopL Wpt where+  vdopL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\vdop -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) vdop++instance PdopL Wpt where+  pdopL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\pdop -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) pdop++instance AgeofdgpsdataL Wpt where+  ageofdgpsdataL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\ageofdgpsdata -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) ageofdgpsdata++instance DgpsidL Wpt where+  dgpsidL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\dgpsid -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) dgpsid++instance ExtensionsL Wpt where+  extensionsL =+    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\extensions -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) extensions++instance XmlPickler Wpt where+  xpickle =+    xpWrap (\(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> wpt a b c d e f g h i j k l m n o p q r s t u,+           \(Wpt a b c d e f g h i j k l m n o p q r s t u) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u)) (xp21Tuple+              (xpAttr "lat" xpickle)+              (xpAttr "lon" xpickle)+              (xpOption (xpElem "ele" xpPrim))+              (xpOption (xpElem "time" (xpWrapMaybe (dateTime, show) xpText)))+              (xpOption (xpElem "magvar" xpickle))+              (xpOption (xpElem "geoidheight" xpPrim))+              (xpOption (xpElem "name" xpText))+              (xpOption (xpElem "cmt" xpText))+              (xpOption (xpElem "desc" xpText))+              (xpOption (xpElem "src" xpText))+              (xpList (xpElem "link" xpickle))+              (xpOption (xpElem "sym" xpText))+              (xpOption (xpElem "type" xpText))+              (xpOption (xpElem "fix" xpickle))+              (xpOption (xpElem "sat" xpPrim))+              (xpOption (xpElem "hdop" xpPrim))+              (xpOption (xpElem "vdop" xpPrim))+              (xpOption (xpElem "pdop" xpPrim))+              (xpOption (xpElem "ageofdgpsdata" xpPrim))+              (xpOption (xpElem "dgpsid" xpickle))+              (xpOption (xpElem "extensions" xpickle)))+
− src/Data/Geo/GPX/Wpt.hs
@@ -1,230 +0,0 @@--- | Complex Type: @wptType@ <http://www.topografix.com/GPX/1/1/#type_wptType>-module Data.Geo.GPX.Wpt(-  Wpt-, wpt-, wpt'-) where--import Data.Geo.GPX.Latitude-import Data.Geo.GPX.Longitude-import Data.Geo.GPX.Degrees-import Data.Geo.GPX.Link-import Data.Geo.GPX.Fix-import Data.Geo.GPX.DgpsStation-import Data.Geo.GPX.Extensions-import Data.Geo.GPX.Lens.LatL-import Data.Geo.GPX.Lens.LonL-import Data.Geo.GPX.Lens.EleL-import Data.Geo.GPX.Lens.TimeL-import Data.Geo.GPX.Lens.MagvarL-import Data.Geo.GPX.Lens.GeoidheightL-import Data.Geo.GPX.Lens.NameL-import Data.Geo.GPX.Lens.CmtL-import Data.Geo.GPX.Lens.DescL-import Data.Geo.GPX.Lens.SrcL-import Data.Geo.GPX.Lens.LinksL-import Data.Geo.GPX.Lens.SymL-import Data.Geo.GPX.Lens.TypeL-import Data.Geo.GPX.Lens.FixL-import Data.Geo.GPX.Lens.SatL-import Data.Geo.GPX.Lens.HdopL-import Data.Geo.GPX.Lens.VdopL-import Data.Geo.GPX.Lens.PdopL-import Data.Geo.GPX.Lens.AgeofdgpsdataL-import Data.Geo.GPX.Lens.DgpsidL-import Data.Geo.GPX.Lens.ExtensionsL-import Data.Lens.Common-import Control.Comonad.Trans.Store-import Text.XML.HXT.Arrow.Pickle-import Text.XML.XSD.DateTime--data Wpt =-  Wpt-    Latitude-    Longitude-    (Maybe Double)-    (Maybe DateTime)-    (Maybe Degrees)-    (Maybe Double)-    (Maybe String)-    (Maybe String)-    (Maybe String)-    (Maybe String)-    [Link]-    (Maybe String)-    (Maybe String)-    (Maybe Fix)-    (Maybe Int)-    (Maybe Double)-    (Maybe Double)-    (Maybe Double)-    (Maybe Double)-    (Maybe DgpsStation)-    (Maybe Extensions)-  deriving Eq--wpt ::-  Latitude -- ^ The lat.-  -> Longitude -- ^ The lon.-  -> Maybe Double -- ^ The ele.-  -> Maybe DateTime -- ^ The time.-  -> Maybe Degrees -- ^ The magvar.-  -> Maybe Double -- ^ The geoidheight.-  -> Maybe String -- ^ The name.-  -> Maybe String -- ^ The cmt.-  -> Maybe String -- ^ The desc.-  -> Maybe String -- ^ The src.-  -> [Link] -- ^ The links (link).-  -> Maybe String -- ^ The sym.-  -> Maybe String -- ^ The type.-  -> Maybe Fix -- ^ The fix.-  -> Maybe Int -- ^ The sat.-  -> Maybe Double -- ^ The hdop.-  -> Maybe Double -- ^ The vdop.-  -> Maybe Double -- ^ The pdop.-  -> Maybe Double -- ^ The ageofdgpsdata.-  -> Maybe DgpsStation -- ^ The dgpsid.-  -> Maybe Extensions -- ^ The extensions.-  -> Wpt-wpt a b c d e f g h i j k l m n o p =-  Wpt a b c d e f g h i j k l m n o (fmap abs p)---- | A waypoint with only a latitude and longitude.-wpt' ::-  Latitude -- ^ The lat.-  -> Longitude -- ^ The lon.-  -> Wpt-wpt' lat' lon' =-  wpt-    lat'-    lon'-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    []-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing-    Nothing--instance LatL Wpt where-  latL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\lat -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) lat--instance LonL Wpt where-  lonL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\lon -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) lon--instance EleL Wpt where-  eleL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\ele -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) ele--instance TimeL Wpt where-  timeL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\time -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) time--instance MagvarL Wpt where-  magvarL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\magvar -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) magvar--instance GeoidheightL Wpt where-  geoidheightL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\geoidheight -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) geoidheight--instance NameL Wpt where-  nameL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\name -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) name--instance CmtL Wpt where-  cmtL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\cmt -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) cmt--instance DescL Wpt where-  descL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\desc -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) desc--instance SrcL Wpt where-  srcL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\src -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) src--instance LinksL Wpt where-  linksL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\links -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) links--instance SymL Wpt where-  symL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\sym -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) sym--instance TypeL Wpt where-  typeL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\typ -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) typ--instance FixL Wpt where-  fixL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\fix -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) fix--instance SatL Wpt where-  satL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\sat -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) sat--instance HdopL Wpt where-  hdopL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\hdop -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) hdop--instance VdopL Wpt where-  vdopL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\vdop -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) vdop--instance PdopL Wpt where-  pdopL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\pdop -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) pdop--instance AgeofdgpsdataL Wpt where-  ageofdgpsdataL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\ageofdgpsdata -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) ageofdgpsdata--instance DgpsidL Wpt where-  dgpsidL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\dgpsid -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) dgpsid--instance ExtensionsL Wpt where-  extensionsL =-    Lens $ \(Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) -> store (\extensions -> Wpt lat lon ele time magvar geoidheight name cmt desc src links sym typ fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions) extensions--instance XmlPickler Wpt where-  xpickle =-    xpWrap (\(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> wpt a b c d e f g h i j k l m n o p q r s t u,-           \(Wpt a b c d e f g h i j k l m n o p q r s t u) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u)) (xp21Tuple-              (xpAttr "lat" xpickle)-              (xpAttr "lon" xpickle)-              (xpOption (xpElem "ele" xpPrim))-              (xpOption (xpElem "time" (xpWrapMaybe (dateTime, show) xpText)))-              (xpOption (xpElem "magvar" xpickle))-              (xpOption (xpElem "geoidheight" xpPrim))-              (xpOption (xpElem "name" xpText))-              (xpOption (xpElem "cmt" xpText))-              (xpOption (xpElem "desc" xpText))-              (xpOption (xpElem "src" xpText))-              (xpList (xpElem "link" xpickle))-              (xpOption (xpElem "sym" xpText))-              (xpOption (xpElem "type" xpText))-              (xpOption (xpElem "fix" xpickle))-              (xpOption (xpElem "sat" xpPrim))-              (xpOption (xpElem "hdop" xpPrim))-              (xpOption (xpElem "vdop" xpPrim))-              (xpOption (xpElem "pdop" xpPrim))-              (xpOption (xpElem "ageofdgpsdata" xpPrim))-              (xpOption (xpElem "dgpsid" xpickle))-              (xpOption (xpElem "extensions" xpickle)))-