packages feed

GPX 0.5 → 0.6.0

raw patch · 146 files changed

+1663/−2317 lines, 146 filesdep +comonad-transformersdep +data-lensdep −hxt-extrasdep ~hxtsetup-changed

Dependencies added: comonad-transformers, data-lens

Dependencies removed: hxt-extras

Dependency ranges changed: hxt

Files

− Data/Geo/GPX.hs
@@ -1,150 +0,0 @@--- | GPX 1.1 Schema <http://www.topografix.com/GPX/1/1/>-module Data.Geo.GPX(-                module Data.Geo.GPX.DgpsStationType,-                module Data.Geo.GPX.FixType,-                module Data.Geo.GPX.DegreesType,-                module Data.Geo.GPX.LongitudeType,-                module Data.Geo.GPX.LatitudeType,-                module Data.Geo.GPX.BoundsType,-                module Data.Geo.GPX.ExtensionsType,-                module Data.Geo.GPX.PtType,-                module Data.Geo.GPX.PtsegType,-                module Data.Geo.GPX.EmailType,-                module Data.Geo.GPX.LinkType,-                module Data.Geo.GPX.PersonType,-                module Data.Geo.GPX.CopyrightType,-                module Data.Geo.GPX.WptType,-                module Data.Geo.GPX.TrksegType,-                module Data.Geo.GPX.TrkType,-                module Data.Geo.GPX.RteType,-                module Data.Geo.GPX.MetadataType,-                module Data.Geo.GPX.GpxType,-                module Data.Geo.GPX.Gpx,-                module Data.Geo.GPX.Accessor.Minlat,-                module Data.Geo.GPX.Accessor.Maxlat,-                module Data.Geo.GPX.Accessor.Minlon,-                module Data.Geo.GPX.Accessor.Maxlon,-                module Data.Geo.GPX.Accessor.Author,-                module Data.Geo.GPX.Accessor.Year,-                module Data.Geo.GPX.Accessor.License,-                module Data.Geo.GPX.Accessor.Value,-                module Data.Geo.GPX.Accessor.Id,-                module Data.Geo.GPX.Accessor.Domain,-                module Data.Geo.GPX.Accessor.Version,-                module Data.Geo.GPX.Accessor.Creator,-                module Data.Geo.GPX.Accessor.Metadata,-                module Data.Geo.GPX.Accessor.Wpts,-                module Data.Geo.GPX.Accessor.Rtes,-                module Data.Geo.GPX.Accessor.Trks,-                module Data.Geo.GPX.Accessor.Extensions,-                module Data.Geo.GPX.Accessor.Href,-                module Data.Geo.GPX.Accessor.Text,-                module Data.Geo.GPX.Accessor.Type,-                module Data.Geo.GPX.Accessor.Name,-                module Data.Geo.GPX.Accessor.Desc,-                module Data.Geo.GPX.Accessor.Copyright,-                module Data.Geo.GPX.Accessor.Links,-                module Data.Geo.GPX.Accessor.Time,-                module Data.Geo.GPX.Accessor.Keywords,-                module Data.Geo.GPX.Accessor.Bounds,-                module Data.Geo.GPX.Accessor.Lat,-                module Data.Geo.GPX.Accessor.Lon,-                module Data.Geo.GPX.Accessor.Ele,-                module Data.Geo.GPX.Accessor.Magvar,-                module Data.Geo.GPX.Accessor.Geoidheight,-                module Data.Geo.GPX.Accessor.Cmt,-                module Data.Geo.GPX.Accessor.Src,-                module Data.Geo.GPX.Accessor.Sym,-                module Data.Geo.GPX.Accessor.Fix,-                module Data.Geo.GPX.Accessor.Sat,-                module Data.Geo.GPX.Accessor.Hdop,-                module Data.Geo.GPX.Accessor.Vdop,-                module Data.Geo.GPX.Accessor.Pdop,-                module Data.Geo.GPX.Accessor.Ageofdgpsdata,-                module Data.Geo.GPX.Accessor.Dgpsid,-                module Data.Geo.GPX.Accessor.Email,-                module Data.Geo.GPX.Accessor.Link,-                module Data.Geo.GPX.Accessor.Pts,-                module Data.Geo.GPX.Accessor.Number,-                module Data.Geo.GPX.Accessor.Rtepts,-                module Data.Geo.GPX.Accessor.Trkpts,-                module Data.Geo.GPX.Accessor.Trksegs,-                module Data.Geo.GPX.Accessor.Latlon,-                module Data.Geo.GPX.Util.Remove,-                module Data.Geo.GPX.Util.Reverse,-                module Control.Arrow-              ) where--import Data.Geo.GPX.DgpsStationType-import Data.Geo.GPX.FixType-import Data.Geo.GPX.DegreesType-import Data.Geo.GPX.LongitudeType-import Data.Geo.GPX.LatitudeType-import Data.Geo.GPX.BoundsType-import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.PtType-import Data.Geo.GPX.PtsegType-import Data.Geo.GPX.EmailType-import Data.Geo.GPX.LinkType-import Data.Geo.GPX.PersonType-import Data.Geo.GPX.CopyrightType-import Data.Geo.GPX.WptType-import Data.Geo.GPX.TrksegType-import Data.Geo.GPX.TrkType-import Data.Geo.GPX.RteType-import Data.Geo.GPX.MetadataType-import Data.Geo.GPX.GpxType-import Data.Geo.GPX.Gpx-import Data.Geo.GPX.Accessor.Minlat-import Data.Geo.GPX.Accessor.Maxlat-import Data.Geo.GPX.Accessor.Minlon-import Data.Geo.GPX.Accessor.Maxlon-import Data.Geo.GPX.Accessor.Author-import Data.Geo.GPX.Accessor.Year-import Data.Geo.GPX.Accessor.License-import Data.Geo.GPX.Accessor.Value-import Data.Geo.GPX.Accessor.Id-import Data.Geo.GPX.Accessor.Domain-import Data.Geo.GPX.Accessor.Version-import Data.Geo.GPX.Accessor.Creator-import Data.Geo.GPX.Accessor.Metadata-import Data.Geo.GPX.Accessor.Wpts-import Data.Geo.GPX.Accessor.Rtes-import Data.Geo.GPX.Accessor.Trks-import Data.Geo.GPX.Accessor.Extensions-import Data.Geo.GPX.Accessor.Href-import Data.Geo.GPX.Accessor.Text-import Data.Geo.GPX.Accessor.Type-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Desc-import Data.Geo.GPX.Accessor.Copyright-import Data.Geo.GPX.Accessor.Links-import Data.Geo.GPX.Accessor.Time-import Data.Geo.GPX.Accessor.Keywords-import Data.Geo.GPX.Accessor.Bounds-import Data.Geo.GPX.Accessor.Lat-import Data.Geo.GPX.Accessor.Lon-import Data.Geo.GPX.Accessor.Ele-import Data.Geo.GPX.Accessor.Magvar-import Data.Geo.GPX.Accessor.Geoidheight-import Data.Geo.GPX.Accessor.Cmt-import Data.Geo.GPX.Accessor.Src-import Data.Geo.GPX.Accessor.Sym-import Data.Geo.GPX.Accessor.Fix-import Data.Geo.GPX.Accessor.Sat-import Data.Geo.GPX.Accessor.Hdop-import Data.Geo.GPX.Accessor.Vdop-import Data.Geo.GPX.Accessor.Pdop-import Data.Geo.GPX.Accessor.Ageofdgpsdata-import Data.Geo.GPX.Accessor.Dgpsid-import Data.Geo.GPX.Accessor.Email-import Data.Geo.GPX.Accessor.Link-import Data.Geo.GPX.Accessor.Pts-import Data.Geo.GPX.Accessor.Number-import Data.Geo.GPX.Accessor.Rtepts-import Data.Geo.GPX.Accessor.Trkpts-import Data.Geo.GPX.Accessor.Trksegs-import Data.Geo.GPX.Accessor.Latlon-import Data.Geo.GPX.Util.Remove-import Data.Geo.GPX.Util.Reverse-import Control.Arrow
− Data/Geo/GPX/Accessor/Accessor.hs
@@ -1,8 +0,0 @@-module Data.Geo.GPX.Accessor.Accessor(-                                       using-                                     ) where--import Control.Monad.Instances()--using :: (a -> d) -> (c -> a -> b) -> (d -> c) -> a -> b-using f g = flip (flip =<< (g .) . flip id . f)
− Data/Geo/GPX/Accessor/Ageofdgpsdata.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Ageofdgpsdata where--import Data.Geo.GPX.Accessor.Accessor--class Ageofdgpsdata a where-  ageofdgpsdata :: a -> Maybe Double-  setAgeofdgpsdata :: Maybe Double -> a -> a--  setAgeofdgpsdata' :: Double -> a -> a-  setAgeofdgpsdata' = setAgeofdgpsdata . Just--  usingAgeofdgpsdata :: (Maybe Double -> Maybe Double) -> a -> a-  usingAgeofdgpsdata = ageofdgpsdata `using` setAgeofdgpsdata--  usingAgeofdgpsdata' :: (Double -> Double) -> a -> a-  usingAgeofdgpsdata' = usingAgeofdgpsdata . fmap
− Data/Geo/GPX/Accessor/Author.hs
@@ -1,12 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}--module Data.Geo.GPX.Accessor.Author where--import Data.Geo.GPX.Accessor.Accessor--class Author a b | a -> b where-  author :: a -> b-  setAuthor :: b -> a -> a--  usingAuthor :: (b -> b) -> a -> a-  usingAuthor = author `using` setAuthor
− Data/Geo/GPX/Accessor/Bounds.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Bounds where--import Data.Geo.GPX.BoundsType-import Data.Geo.GPX.Accessor.Accessor--class Bounds a where-  bounds :: a -> Maybe BoundsType-  setBounds :: Maybe BoundsType -> a -> a--  setBounds' :: BoundsType -> a -> a-  setBounds' = setBounds . Just--  usingBounds :: (Maybe BoundsType -> Maybe BoundsType) -> a -> a-  usingBounds = bounds `using` setBounds--  usingBounds' :: (BoundsType -> BoundsType) -> a -> a-  usingBounds' = usingBounds . fmap
− Data/Geo/GPX/Accessor/Cmt.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Cmt where--import Data.Geo.GPX.Accessor.Accessor--class Cmt a where-  cmt :: a -> Maybe String-  setCmt :: Maybe String -> a -> a--  setCmt' :: String -> a -> a-  setCmt' = setCmt . Just--  usingCmt :: (Maybe String -> Maybe String) -> a -> a-  usingCmt = cmt `using` setCmt--  usingCmt' :: (String -> String) -> a -> a-  usingCmt' = usingCmt . fmap
− Data/Geo/GPX/Accessor/Copyright.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Copyright where--import Data.Geo.GPX.CopyrightType-import Data.Geo.GPX.Accessor.Accessor--class Copyright a where-  copyright :: a -> Maybe CopyrightType-  setCopyright :: Maybe CopyrightType -> a -> a--  setCopyright' :: CopyrightType -> a -> a-  setCopyright' = setCopyright . Just--  usingCopyright :: (Maybe CopyrightType -> Maybe CopyrightType) -> a -> a-  usingCopyright = copyright `using` setCopyright--  usingCopyright' :: (CopyrightType -> CopyrightType) -> a -> a-  usingCopyright' = usingCopyright . fmap
− Data/Geo/GPX/Accessor/Creator.hs
@@ -1,10 +0,0 @@-module Data.Geo.GPX.Accessor.Creator where--import Data.Geo.GPX.Accessor.Accessor--class Creator a where-  creator :: a -> String-  setCreator :: String -> a -> a--  usingCreator :: (String -> String) -> a -> a-  usingCreator = creator `using` setCreator
− Data/Geo/GPX/Accessor/Desc.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Desc where--import Data.Geo.GPX.Accessor.Accessor--class Desc a where-  desc :: a -> Maybe String-  setDesc :: Maybe String -> a -> a--  setDesc' :: String -> a -> a-  setDesc' = setDesc . Just--  usingDesc :: (Maybe String -> Maybe String) -> a -> a-  usingDesc = desc `using` setDesc--  usingDesc' :: (String -> String) -> a -> a-  usingDesc' = usingDesc . fmap
− Data/Geo/GPX/Accessor/Dgpsid.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Dgpsid where--import Data.Geo.GPX.DgpsStationType-import Data.Geo.GPX.Accessor.Accessor--class Dgpsid a where-  dgpsid :: a -> Maybe DgpsStationType-  setDgpsid :: Maybe DgpsStationType -> a -> a--  setDgpsid' :: DgpsStationType -> a -> a-  setDgpsid' = setDgpsid . Just--  usingDgpsid :: (Maybe DgpsStationType -> Maybe DgpsStationType) -> a -> a-  usingDgpsid = dgpsid `using` setDgpsid--  usingDgpsid' :: (DgpsStationType -> DgpsStationType) -> a -> a-  usingDgpsid' = usingDgpsid . fmap
− Data/Geo/GPX/Accessor/Domain.hs
@@ -1,10 +0,0 @@-module Data.Geo.GPX.Accessor.Domain where--import Data.Geo.GPX.Accessor.Accessor--class Domain a where-  domain :: a -> String-  setDomain :: String -> a -> a--  usingDomain :: (String -> String) -> a -> a-  usingDomain = domain `using` setDomain
− Data/Geo/GPX/Accessor/Ele.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Ele where--import Data.Geo.GPX.Accessor.Accessor--class Ele a where-  ele :: a -> Maybe Double-  setEle :: Maybe Double -> a -> a--  setEle' :: Double -> a -> a-  setEle' = setEle . Just--  usingEle :: (Maybe Double -> Maybe Double) -> a -> a-  usingEle = ele `using` setEle--  usingEle' :: (Double -> Double) -> a -> a-  usingEle' = usingEle . fmap
− Data/Geo/GPX/Accessor/Email.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Email where--import Data.Geo.GPX.EmailType-import Data.Geo.GPX.Accessor.Accessor--class Email a where-  email :: a -> Maybe EmailType-  setEmail :: Maybe EmailType -> a -> a--  setEmail' :: EmailType -> a -> a-  setEmail' = setEmail . Just--  usingEmail :: (Maybe EmailType -> Maybe EmailType) -> a -> a-  usingEmail = email `using` setEmail--  usingEmail' :: (EmailType -> EmailType) -> a -> a-  usingEmail' = usingEmail . fmap
− Data/Geo/GPX/Accessor/Extensions.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Extensions where--import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.Accessor.Accessor--class Extensions a where-  extensions :: a -> Maybe ExtensionsType-  setExtensions :: Maybe ExtensionsType -> a -> a--  setExtensions' :: ExtensionsType -> a -> a-  setExtensions' = setExtensions . Just--  usingExtensions :: (Maybe ExtensionsType -> Maybe ExtensionsType) -> a -> a-  usingExtensions = extensions `using` setExtensions--  usingExtensions' :: (ExtensionsType -> ExtensionsType) -> a -> a-  usingExtensions' = usingExtensions . fmap
− Data/Geo/GPX/Accessor/Fix.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Fix where--import Data.Geo.GPX.FixType-import Data.Geo.GPX.Accessor.Accessor--class Fix a where-  fix :: a -> Maybe FixType-  setFix :: Maybe FixType -> a -> a--  setFix' :: FixType -> a -> a-  setFix' = setFix . Just--  usingFix :: (Maybe FixType -> Maybe FixType) -> a -> a-  usingFix = fix `using` setFix--  usingFix' :: (FixType -> FixType) -> a -> a-  usingFix' = usingFix . fmap
− Data/Geo/GPX/Accessor/Geoidheight.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Geoidheight where--import Data.Geo.GPX.Accessor.Accessor--class Geoidheight a where-  geoidheight :: a -> Maybe Double-  setGeoidheight :: Maybe Double -> a -> a--  setGeoidheight' :: Double -> a -> a-  setGeoidheight' = setGeoidheight . Just--  usingGeoidheight :: (Maybe Double -> Maybe Double) -> a -> a-  usingGeoidheight = geoidheight `using` setGeoidheight--  usingGeoidheight' :: (Double -> Double) -> a -> a-  usingGeoidheight' = usingGeoidheight . fmap
− Data/Geo/GPX/Accessor/Hdop.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Hdop where--import Data.Geo.GPX.Accessor.Accessor--class Hdop a where-  hdop :: a -> Maybe Double-  setHdop :: Maybe Double -> a -> a--  setHdop' :: Double -> a -> a-  setHdop' = setHdop . Just--  usingHdop :: (Maybe Double -> Maybe Double) -> a -> a-  usingHdop = hdop `using` setHdop--  usingHdop' :: (Double -> Double) -> a -> a-  usingHdop' = usingHdop . fmap
− Data/Geo/GPX/Accessor/Href.hs
@@ -1,10 +0,0 @@-module Data.Geo.GPX.Accessor.Href where--import Data.Geo.GPX.Accessor.Accessor--class Href a where-  href :: a -> String-  setHref :: String -> a -> a--  usingHref :: (String -> String) -> a -> a-  usingHref = href `using` setHref
− Data/Geo/GPX/Accessor/Id.hs
@@ -1,11 +0,0 @@-module Data.Geo.GPX.Accessor.Id where--import Data.Geo.GPX.Accessor.Accessor-import Prelude hiding (id)--class Id a where-  id :: a -> String-  setId :: String -> a -> a--  usingId :: (String -> String) -> a -> a-  usingId = id `using` setId
− Data/Geo/GPX/Accessor/Keywords.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Keywords where--import Data.Geo.GPX.Accessor.Accessor--class Keywords a where-  keywords :: a -> Maybe String-  setKeywords :: Maybe String -> a -> a--  setKeywords' :: String -> a -> a-  setKeywords' = setKeywords . Just--  usingKeywords :: (Maybe String -> Maybe String) -> a -> a-  usingKeywords = keywords `using` setKeywords--  usingKeywords' :: (String -> String) -> a -> a-  usingKeywords' = usingKeywords . fmap
− Data/Geo/GPX/Accessor/Lat.hs
@@ -1,11 +0,0 @@-module Data.Geo.GPX.Accessor.Lat where--import Data.Geo.GPX.LatitudeType-import Data.Geo.GPX.Accessor.Accessor--class Lat a where-  lat :: a -> LatitudeType-  setLat :: LatitudeType -> a -> a--  usingLat :: (LatitudeType -> LatitudeType) -> a -> a-  usingLat = lat `using` setLat
− Data/Geo/GPX/Accessor/Latlon.hs
@@ -1,11 +0,0 @@-{-# LANGUAGE FlexibleContexts, FlexibleInstances, UndecidableInstances #-}--module Data.Geo.GPX.Accessor.Latlon where-import Data.Geo.GPX.Accessor.Accessor--class Latlon a where-  latlon :: a -> (Double, Double)-  setLatlon :: (Double, Double) -> a -> a--  usingLatlon :: ((Double, Double) -> (Double, Double)) -> a -> a-  usingLatlon = latlon `using` setLatlon
− Data/Geo/GPX/Accessor/License.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.License where--import Data.Geo.GPX.Accessor.Accessor--class License a where-  license :: a -> Maybe String-  setLicense :: Maybe String -> a -> a--  setLicense' :: String -> a -> a-  setLicense' = setLicense . Just--  usingLicense :: (Maybe String -> Maybe String) -> a -> a-  usingLicense = license `using` setLicense--  usingLicense' :: (String -> String) -> a -> a-  usingLicense' = usingLicense . fmap
− Data/Geo/GPX/Accessor/Link.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Link where--import Data.Geo.GPX.LinkType-import Data.Geo.GPX.Accessor.Accessor--class Link a where-  link :: a -> Maybe LinkType-  setLink :: Maybe LinkType -> a -> a--  setLink' :: LinkType -> a -> a-  setLink' = setLink . Just--  usingLink :: (Maybe LinkType -> Maybe LinkType) -> a -> a-  usingLink = link `using` setLink--  usingLink' :: (LinkType -> LinkType) -> a -> a-  usingLink' = usingLink . fmap
− Data/Geo/GPX/Accessor/Links.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Links where--import Data.Geo.GPX.LinkType-import Data.Geo.GPX.Accessor.Accessor--class Links a where-  links :: a -> [LinkType]-  setLinks :: [LinkType] -> a -> a--  setLinks' :: LinkType -> a -> a-  setLinks' = setLinks . return--  usingLinks :: ([LinkType] -> [LinkType]) -> a -> a-  usingLinks = links `using` setLinks--  usingLinks' :: (LinkType -> LinkType) -> a -> a-  usingLinks' = usingLinks . fmap
− Data/Geo/GPX/Accessor/Lon.hs
@@ -1,11 +0,0 @@-module Data.Geo.GPX.Accessor.Lon where--import Data.Geo.GPX.LongitudeType-import Data.Geo.GPX.Accessor.Accessor--class Lon a where-  lon :: a -> LongitudeType-  setLon :: LongitudeType -> a -> a--  usingLon :: (LongitudeType -> LongitudeType) -> a -> a-  usingLon = lon `using` setLon
− Data/Geo/GPX/Accessor/Magvar.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Magvar where--import Data.Geo.GPX.DegreesType-import Data.Geo.GPX.Accessor.Accessor--class Magvar a where-  magvar :: a -> Maybe DegreesType-  setMagvar :: Maybe DegreesType -> a -> a--  setMagvar' :: DegreesType -> a -> a-  setMagvar' = setMagvar . Just--  usingMagvar :: (Maybe DegreesType -> Maybe DegreesType) -> a -> a-  usingMagvar = magvar `using` setMagvar--  usingMagvar' :: (DegreesType -> DegreesType) -> a -> a-  usingMagvar' = usingMagvar . fmap
− Data/Geo/GPX/Accessor/Maxlat.hs
@@ -1,11 +0,0 @@-module Data.Geo.GPX.Accessor.Maxlat where--import Data.Geo.GPX.LatitudeType-import Data.Geo.GPX.Accessor.Accessor--class Maxlat a where-  maxlat :: a -> LatitudeType-  setMaxlat :: LatitudeType -> a -> a--  usingMaxlat :: (LatitudeType -> LatitudeType) -> a -> a-  usingMaxlat = maxlat `using` setMaxlat
− Data/Geo/GPX/Accessor/Maxlon.hs
@@ -1,11 +0,0 @@-module Data.Geo.GPX.Accessor.Maxlon where--import Data.Geo.GPX.LongitudeType-import Data.Geo.GPX.Accessor.Accessor--class Maxlon a where-  maxlon :: a -> LongitudeType-  setMaxlon :: LongitudeType -> a -> a--  usingMaxlon :: (LongitudeType -> LongitudeType) -> a -> a-  usingMaxlon = maxlon `using` setMaxlon
− Data/Geo/GPX/Accessor/Metadata.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Metadata where--import Data.Geo.GPX.MetadataType-import Data.Geo.GPX.Accessor.Accessor--class Metadata a where-  metadata :: a -> Maybe MetadataType-  setMetadata :: Maybe MetadataType -> a -> a--  setMetadata' :: MetadataType -> a -> a-  setMetadata' = setMetadata . Just--  usingMetadata :: (Maybe MetadataType -> Maybe MetadataType) -> a -> a-  usingMetadata = metadata `using` setMetadata--  usingMetadata' :: (MetadataType -> MetadataType) -> a -> a-  usingMetadata' = usingMetadata . fmap
− Data/Geo/GPX/Accessor/Minlat.hs
@@ -1,11 +0,0 @@-module Data.Geo.GPX.Accessor.Minlat where--import Data.Geo.GPX.LatitudeType-import Data.Geo.GPX.Accessor.Accessor--class Minlat a where-  minlat :: a -> LatitudeType-  setMinlat :: LatitudeType -> a -> a--  usingMinlat :: (LatitudeType -> LatitudeType) -> a -> a-  usingMinlat = minlat `using` setMinlat
− Data/Geo/GPX/Accessor/Minlon.hs
@@ -1,11 +0,0 @@-module Data.Geo.GPX.Accessor.Minlon where--import Data.Geo.GPX.LongitudeType-import Data.Geo.GPX.Accessor.Accessor--class Minlon a where-  minlon :: a -> LongitudeType-  setMinlon :: LongitudeType -> a -> a--  usingMinlon :: (LongitudeType -> LongitudeType) -> a -> a-  usingMinlon = minlon `using` setMinlon
− Data/Geo/GPX/Accessor/Name.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Name where--import Data.Geo.GPX.Accessor.Accessor--class Name a where-  name :: a -> Maybe String-  setName :: Maybe String -> a -> a--  setName' :: String -> a -> a-  setName' = setName . Just--  usingName :: (Maybe String -> Maybe String) -> a -> a-  usingName = name `using` setName--  usingName' :: (String -> String) -> a -> a-  usingName' = usingName . fmap
− Data/Geo/GPX/Accessor/Number.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Number where--import Data.Geo.GPX.Accessor.Accessor--class Number a where-  number :: a -> Maybe Int-  setNumber :: Maybe Int -> a -> a--  setNumber' :: Int -> a -> a-  setNumber' = setNumber . Just--  usingNumber :: (Maybe Int -> Maybe Int) -> a -> a-  usingNumber = number `using` setNumber--  usingNumber' :: (Int -> Int) -> a -> a-  usingNumber' = usingNumber . fmap
− Data/Geo/GPX/Accessor/Pdop.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Pdop where--import Data.Geo.GPX.Accessor.Accessor--class Pdop a where-  pdop :: a -> Maybe Double-  setPdop :: Maybe Double -> a -> a--  setPdop' :: Double -> a -> a-  setPdop' = setPdop . Just--  usingPdop :: (Maybe Double -> Maybe Double) -> a -> a-  usingPdop = pdop `using` setPdop--  usingPdop' :: (Double -> Double) -> a -> a-  usingPdop' = usingPdop . fmap
− Data/Geo/GPX/Accessor/Pts.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Pts where--import Data.Geo.GPX.PtType-import Data.Geo.GPX.Accessor.Accessor--class Pts a where-  pts :: a -> [PtType]-  setPts :: [PtType] -> a -> a--  setPts' :: PtType -> a -> a-  setPts' = setPts . return--  usingPts :: ([PtType] -> [PtType]) -> a -> a-  usingPts = pts `using` setPts--  usingPts' :: (PtType -> PtType) -> a -> a-  usingPts' = usingPts . fmap
− Data/Geo/GPX/Accessor/Rtepts.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Rtepts where--import Data.Geo.GPX.WptType-import Data.Geo.GPX.Accessor.Accessor--class Rtepts a where-  rtepts :: a -> [WptType]-  setRtepts :: [WptType] -> a -> a--  setRtepts' :: WptType -> a -> a-  setRtepts' = setRtepts . return--  usingRtepts :: ([WptType] -> [WptType]) -> a -> a-  usingRtepts = rtepts `using` setRtepts--  usingRtepts' :: (WptType -> WptType) -> a -> a-  usingRtepts' = usingRtepts . fmap
− Data/Geo/GPX/Accessor/Rtes.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Rtes where--import Data.Geo.GPX.RteType-import Data.Geo.GPX.Accessor.Accessor--class Rtes a where-  rtes :: a -> [RteType]-  setRtes :: [RteType] -> a -> a--  setRtes' :: RteType -> a -> a-  setRtes' = setRtes . return--  usingRtes :: ([RteType] -> [RteType]) -> a -> a-  usingRtes = rtes `using` setRtes--  usingRtes' :: (RteType -> RteType) -> a -> a-  usingRtes' = usingRtes . fmap
− Data/Geo/GPX/Accessor/Sat.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Sat where--import Data.Geo.GPX.Accessor.Accessor--class Sat a where-  sat :: a -> Maybe Int-  setSat :: Maybe Int -> a -> a--  setSat' :: Int -> a -> a-  setSat' = setSat . Just--  usingSat :: (Maybe Int -> Maybe Int) -> a -> a-  usingSat = sat `using` setSat--  usingSat' :: (Int -> Int) -> a -> a-  usingSat' = usingSat . fmap
− Data/Geo/GPX/Accessor/Src.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Src where--import Data.Geo.GPX.Accessor.Accessor--class Src a where-  src :: a -> Maybe String-  setSrc :: Maybe String -> a -> a--  setSrc' :: String -> a -> a-  setSrc' = setSrc . Just--  usingSrc :: (Maybe String -> Maybe String) -> a -> a-  usingSrc = src `using` setSrc--  usingSrc' :: (String -> String) -> a -> a-  usingSrc' = usingSrc . fmap
− Data/Geo/GPX/Accessor/Sym.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Sym where--import Data.Geo.GPX.Accessor.Accessor--class Sym a where-  sym :: a -> Maybe String-  setSym :: Maybe String -> a -> a--  setSym' :: String -> a -> a-  setSym' = setSym . Just--  usingSym :: (Maybe String -> Maybe String) -> a -> a-  usingSym = sym `using` setSym--  usingSym' :: (String -> String) -> a -> a-  usingSym' = usingSym . fmap
− Data/Geo/GPX/Accessor/Text.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Text where--import Data.Geo.GPX.Accessor.Accessor--class Text a where-  text :: a -> Maybe String-  setText :: Maybe String -> a -> a--  setText' :: String -> a -> a-  setText' = setText . Just--  usingText :: (Maybe String -> Maybe String) -> a -> a-  usingText = text `using` setText--  usingText' :: (String -> String) -> a -> a-  usingText' = usingText . fmap
− Data/Geo/GPX/Accessor/Time.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Time where--import Text.XML.XSD.DateTime-import Data.Geo.GPX.Accessor.Accessor--class Time a where-  time :: a -> Maybe DateTime-  setTime :: Maybe DateTime -> a -> a--  setTime' :: DateTime -> a -> a-  setTime' = setTime . Just--  usingTime :: (Maybe DateTime -> Maybe DateTime) -> a -> a-  usingTime = time `using` setTime--  usingTime' :: (DateTime -> DateTime) -> a -> a-  usingTime' = usingTime . fmap
− Data/Geo/GPX/Accessor/Trkpts.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Trkpts where--import Data.Geo.GPX.WptType-import Data.Geo.GPX.Accessor.Accessor--class Trkpts a where-  trkpts :: a -> [WptType]-  setTrkpts :: [WptType] -> a -> a--  setTrkpts' :: WptType -> a -> a-  setTrkpts' = setTrkpts . return--  usingTrkpts :: ([WptType] -> [WptType]) -> a -> a-  usingTrkpts = trkpts `using` setTrkpts--  usingTrkpts' :: (WptType -> WptType) -> a -> a-  usingTrkpts' = usingTrkpts . fmap
− Data/Geo/GPX/Accessor/Trks.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Trks where--import Data.Geo.GPX.TrkType-import Data.Geo.GPX.Accessor.Accessor--class Trks a where-  trks :: a -> [TrkType]-  setTrks :: [TrkType] -> a -> a--  setTrks' :: TrkType -> a -> a-  setTrks' = setTrks . return--  usingTrks :: ([TrkType] -> [TrkType]) -> a -> a-  usingTrks = trks `using` setTrks--  usingTrks' :: (TrkType -> TrkType) -> a -> a-  usingTrks' = usingTrks . fmap
− Data/Geo/GPX/Accessor/Trksegs.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Trksegs where--import Data.Geo.GPX.TrksegType-import Data.Geo.GPX.Accessor.Accessor--class Trksegs a where-  trksegs :: a -> [TrksegType]-  setTrksegs :: [TrksegType] -> a -> a--  setTrksegs' :: TrksegType -> a -> a-  setTrksegs' = setTrksegs . return--  usingTrksegs :: ([TrksegType] -> [TrksegType]) -> a -> a-  usingTrksegs = trksegs `using` setTrksegs--  usingTrksegs' :: (TrksegType -> TrksegType) -> a -> a-  usingTrksegs' = usingTrksegs . fmap
− Data/Geo/GPX/Accessor/Type.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Type where--import Data.Geo.GPX.Accessor.Accessor--class Type a where-  type' :: a -> Maybe String-  setType :: Maybe String -> a -> a--  setType' :: String -> a -> a-  setType' = setType . Just--  usingType :: (Maybe String -> Maybe String) -> a -> a-  usingType = type' `using` setType--  usingType' :: (String -> String) -> a -> a-  usingType' = usingType . fmap
− Data/Geo/GPX/Accessor/Value.hs
@@ -1,11 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}-module Data.Geo.GPX.Accessor.Value where--import Data.Geo.GPX.Accessor.Accessor--class Value a b | a -> b where-  value :: a -> b-  setValue :: b -> a -> a--  usingValue :: (b -> b) -> a -> a-  usingValue = value `using` setValue
− Data/Geo/GPX/Accessor/Vdop.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Vdop where--import Data.Geo.GPX.Accessor.Accessor--class Vdop a where-  vdop :: a -> Maybe Double-  setVdop :: Maybe Double -> a -> a--  setVdop' :: Double -> a -> a-  setVdop' = setVdop . Just--  usingVdop :: (Maybe Double -> Maybe Double) -> a -> a-  usingVdop = vdop `using` setVdop--  usingVdop' :: (Double -> Double) -> a -> a-  usingVdop' = usingVdop . fmap
− Data/Geo/GPX/Accessor/Version.hs
@@ -1,10 +0,0 @@-module Data.Geo.GPX.Accessor.Version where--import Data.Geo.GPX.Accessor.Accessor--class Version a where-  version :: a -> String-  setVersion :: String -> a -> a--  usingVersion :: (String -> String) -> a -> a-  usingVersion = version `using` setVersion
− Data/Geo/GPX/Accessor/Wpts.hs
@@ -1,17 +0,0 @@-module Data.Geo.GPX.Accessor.Wpts where--import Data.Geo.GPX.WptType-import Data.Geo.GPX.Accessor.Accessor--class Wpts a where-  wpts :: a -> [WptType]-  setWpts :: [WptType] -> a -> a--  setWpts' :: WptType -> a -> a-  setWpts' = setWpts . return--  usingWpts :: ([WptType] -> [WptType]) -> a -> a-  usingWpts = wpts `using` setWpts--  usingWpts' :: (WptType -> WptType) -> a -> a-  usingWpts' = usingWpts . fmap
− Data/Geo/GPX/Accessor/Year.hs
@@ -1,16 +0,0 @@-module Data.Geo.GPX.Accessor.Year where--import Data.Geo.GPX.Accessor.Accessor--class Year a where-  year :: a -> Maybe String-  setYear :: Maybe String -> a -> a--  setYear' :: String -> a -> a-  setYear' = setYear . Just--  usingYear :: (Maybe String -> Maybe String) -> a -> a-  usingYear = year `using` setYear--  usingYear' :: (String -> String) -> a -> a-  usingYear' = usingYear . fmap
− Data/Geo/GPX/BoundsType.hs
@@ -1,45 +0,0 @@--- | Complex Type: @boundsType@ <http://www.topografix.com/GPX/1/1/#type_boundsType>-module Data.Geo.GPX.BoundsType(-                                BoundsType,-                                boundsType-                              ) where--import Data.Geo.GPX.LatitudeType-import Data.Geo.GPX.LongitudeType-import Data.Geo.GPX.Accessor.Minlat-import Data.Geo.GPX.Accessor.Maxlat-import Data.Geo.GPX.Accessor.Minlon-import Data.Geo.GPX.Accessor.Maxlon-import Text.XML.HXT.Core--data BoundsType = BoundsType (LatitudeType, LongitudeType) (LatitudeType, LongitudeType)-  deriving (Show, Eq)--boundsType :: (LatitudeType, LongitudeType) -- ^ The minimum latitude and longitude.-              -> (LatitudeType, LongitudeType) -- ^ The maximum latitude and longitude.-              -> BoundsType-boundsType = BoundsType--instance XmlPickler BoundsType where-  xpickle = xpWrap (\(minlat', minlon', maxlat', maxlon') -> boundsType (minlat', minlon') (maxlat', maxlon'),-                    \(BoundsType (minlat', minlon') (maxlat', maxlon')) -> (minlat', minlon', maxlat', maxlon')) (xp4Tuple-                      (xpAttr "minlat" xpickle)-                      (xpAttr "minlon" xpickle)-                      (xpAttr "maxlat" xpickle)-                      (xpAttr "maxlon" xpickle))--instance Minlat BoundsType where-  minlat (BoundsType (x, _) (_, _)) = x-  setMinlat a (BoundsType (_, b) (c, d)) = boundsType (a, b) (c, d)--instance Maxlat BoundsType where-  maxlat (BoundsType (_, _) (x, _)) = x-  setMaxlat c (BoundsType (a, b) (_, d)) = boundsType (a, b) (c, d)--instance Minlon BoundsType where-  minlon (BoundsType (_, x) (_, _)) = x-  setMinlon b (BoundsType (a, _) (c, d)) = boundsType (a, b) (c, d)--instance Maxlon BoundsType where-  maxlon (BoundsType (_, _) (_, x)) = x-  setMaxlon d (BoundsType (a, b) (c, _)) = boundsType (a, b) (c, d)
− Data/Geo/GPX/CopyrightType.hs
@@ -1,39 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-}---- | Complex Type: @copyrightType@ <http://www.topografix.com/GPX/1/1/#type_copyrightType>-module Data.Geo.GPX.CopyrightType(-                                   CopyrightType,-                                   copyrightType-                                 ) where--import Data.Geo.GPX.Accessor.Author-import Data.Geo.GPX.Accessor.Year-import Data.Geo.GPX.Accessor.License-import Text.XML.HXT.Core--data CopyrightType = CopyrightType String (Maybe String) (Maybe String)-  deriving (Eq, Show)--copyrightType :: String -- ^ The author.-                 -> Maybe String -- ^ The year.-                 -> Maybe String -- ^ The license.-                 -> CopyrightType-copyrightType = CopyrightType--instance XmlPickler CopyrightType where-  xpickle = xpWrap (\(author', year', license') -> copyrightType author' year' license', \(CopyrightType author' year' license') -> (author', year', license')) (xpTriple-              (xpAttr "author" xpText)-              (xpOption (xpElem "year" xpText))-              (xpOption (xpElem "license" xpText)))--instance Author CopyrightType String where-  author (CopyrightType x _ _) = x-  setAuthor x (CopyrightType _ y z) = copyrightType x y z--instance Year CopyrightType where-  year (CopyrightType _ x _) = x-  setYear y (CopyrightType x _ z) = copyrightType x y z--instance License CopyrightType where-  license (CopyrightType _ _ x) = x-  setLicense z (CopyrightType x y _) = copyrightType x y z
− Data/Geo/GPX/DegreesType.hs
@@ -1,25 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}---- | Simple Type: @degreesType@ <http://www.topografix.com/GPX/1/1/#type_degreesType>-module Data.Geo.GPX.DegreesType(-                                 DegreesType,-                                 degreesType-                               ) where--import Data.Geo.GPX.Accessor.Value-import Data.Fixed-import Text.XML.HXT.Core--newtype DegreesType = DegreesType Double-  deriving (Eq, Show)--degreesType :: Double -- ^ The value which will be between 0 and 360 (values out of the range are truncated using a modulus operation).-               -> DegreesType-degreesType n = DegreesType (n `mod'` 360)--instance XmlPickler DegreesType where-  xpickle = xpWrap (degreesType, \(DegreesType n) -> n) xpPrim--instance Value DegreesType Double where-  value (DegreesType x) = x-  setValue x (DegreesType _) = degreesType x
− Data/Geo/GPX/DgpsStationType.hs
@@ -1,29 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}---- | Simple Type: @dgpsStationType@ <http://www.topografix.com/GPX/1/1/#type_dgpsStationType>-module Data.Geo.GPX.DgpsStationType(-                                     DgpsStationType,-                                     dgpsStationType-                                   ) where--import Text.XML.HXT.Core-import Data.Geo.GPX.Accessor.Value-import Data.Ix-import Data.Maybe--newtype DgpsStationType = DgpsStationType Int-  deriving Eq--dgpsStationType :: Int -- ^ The value between 0 and 1023.-                   -> Maybe DgpsStationType-dgpsStationType n = if inRange (0, 1023) n then Just (DgpsStationType n) else Nothing--instance Show DgpsStationType where-  show (DgpsStationType n) = show n--instance XmlPickler DgpsStationType where-  xpickle = xpWrapMaybe (dgpsStationType, \(DgpsStationType n) -> n) xpickle--instance Value DgpsStationType Int where-  value (DgpsStationType x) = x-  setValue x (DgpsStationType _) = fromMaybe (error ("DgpsStationType " ++ show x ++ " out of range (0,1023)")) (dgpsStationType x)
− Data/Geo/GPX/EmailType.hs
@@ -1,29 +0,0 @@--- | Complex Type: @emailType@ <http://www.topografix.com/GPX/1/1/#type_emailType>-module Data.Geo.GPX.EmailType(-                               EmailType,-                               emailType-                             ) where--import Text.XML.HXT.Core-import Data.Geo.GPX.Accessor.Id-import Data.Geo.GPX.Accessor.Domain--data EmailType = EmailType String String-  deriving (Eq, Show)--emailType :: String -- ^ The id.-             -> String -- ^ The domain.-             -> EmailType-emailType = EmailType--instance XmlPickler EmailType where-  xpickle = xpWrap (uncurry emailType, \(EmailType id' domain') -> (id', domain'))-              (xpPair (xpAttr "id" xpText) (xpAttr "domain" xpText))--instance Id EmailType where-  id (EmailType x _) = x-  setId a (EmailType _ b) = emailType a b--instance Domain EmailType where-  domain (EmailType _ x) = x-  setDomain b (EmailType a _) = emailType a b
− Data/Geo/GPX/ExtensionsType.hs
@@ -1,24 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances #-}---- | Complex Type: @extensionsType@ <http://www.topografix.com/GPX/1/1/#type_extensionsType>-module Data.Geo.GPX.ExtensionsType(-                                    ExtensionsType,-                                    extensionsType-                                  ) where--import Text.XML.HXT.Core-import Data.Geo.GPX.Accessor.Value--newtype ExtensionsType = ExtensionsType XmlTree-  deriving (Eq, Show)--instance XmlPickler ExtensionsType where-  xpickle = xpWrap (ExtensionsType, \(ExtensionsType t) -> t) xpTree--extensionsType :: XmlTree -- ^ The extensions sub-tree.-                  -> ExtensionsType-extensionsType = ExtensionsType--instance Value ExtensionsType XmlTree where-  value (ExtensionsType x) = x-  setValue x (ExtensionsType _) = extensionsType x
− Data/Geo/GPX/FixType.hs
@@ -1,66 +0,0 @@--- | Simple Type: @fixType@ <http://www.topografix.com/GPX/1/1/#type_fixType>-module Data.Geo.GPX.FixType(-                             FixType,-                             foldFixType,-                             none,-                             twod,-                             threed,-                             dgps,-                             pps,-                             fixType-                           ) where--import Text.XML.HXT.Core hiding (none)--data FixType = None | Twod | Threed | Dgps | Pps-  deriving (Eq, Enum)---- | The catamorphism for @FixType@.-foldFixType :: 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@.-               -> FixType -- ^ The value to fold.-               -> a-foldFixType n _ _ _ _ None = n-foldFixType _ t _ _ _ Twod = t-foldFixType _ _ t _ _ Threed = t-foldFixType _ _ _ d _ Dgps = d-foldFixType _ _ _ _ p Pps = p---- | Construct a @FixType@ with a value of @none@.-none :: FixType-none = None---- | Construct a @FixType@ with a value of @2d@.-twod :: FixType-twod = Twod---- | Construct a @FixType@ with a value of @3d@.-threed :: FixType-threed = Threed---- | Construct a @FixType@ with a value of @dgps@.-dgps :: FixType-dgps = Dgps---- | Construct a @FixType@ with a value of @pps@.-pps :: FixType-pps = Pps---- | Construct a @FixType@ using a string with a value of @["none", "2d", "3d", "dgps", "pps"]@.-fixType :: String -- ^ The string value to construct a @FixType@ with.-           -> Maybe FixType-fixType "none" = Just none-fixType "2d"= Just twod-fixType "3d" = Just threed-fixType "dgps" = Just dgps-fixType "pps" = Just pps-fixType _ = Nothing--instance XmlPickler FixType where-  xpickle = xpWrapMaybe (fixType, show) xpText--instance Show FixType where-  show = foldFixType "none" "2d" "3d" "dgps" "pps"
− Data/Geo/GPX/Gpx.hs
@@ -1,142 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, GeneralizedNewtypeDeriving #-}---- | Element: @gpx@ <http://www.topografix.com/GPX/1/1/#element_gpx>-module Data.Geo.GPX.Gpx(-                         Gpx,-                         gpx,-                         readGpxFile,-                         readGpxFiles,-                         interactGpxIO,-                         interactsGpxIO,-                         interactGpxIO',-                         interactsGpxIO',-                         interactGpx,-                         interactsGpx,-                         interactGpx',-                         interactsGpx'-                       ) where--import Text.XML.HXT.Core-import Control.Monad-import Data.List-import Data.Geo.GPX.GpxType-import Data.Geo.GPX.PersonType-import Data.Geo.GPX.Accessor.Value-import Data.Geo.GPX.Accessor.Version-import Data.Geo.GPX.Accessor.Creator-import Data.Geo.GPX.Accessor.Metadata-import Data.Geo.GPX.Accessor.Wpts-import Data.Geo.GPX.Accessor.Rtes-import Data.Geo.GPX.Accessor.Trks-import Data.Geo.GPX.Accessor.Extensions-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Desc-import Data.Geo.GPX.Accessor.Author-import Data.Geo.GPX.Accessor.Copyright-import Data.Geo.GPX.Accessor.Links-import Data.Geo.GPX.Accessor.Time-import Data.Geo.GPX.Accessor.Keywords-import Data.Geo.GPX.Accessor.Bounds-import Data.Geo.GPX.Accessor.Rtepts-import Data.Geo.GPX.Accessor.Trkpts--newtype Gpx = Gpx GpxType-  deriving (Eq, Version, Creator, Metadata, Wpts, Rtes, Trks, Extensions, Name, Desc, Copyright, Links, Time, Keywords, Bounds, Rtepts, Trkpts)--instance Author Gpx (Maybe PersonType) where-  author = author . value-  setAuthor = (gpx .) . (. value) . setAuthor--gpx :: GpxType -- ^ The gpx element contents.-       -> Gpx-gpx = Gpx--instance Show Gpx where-  show (Gpx n) = show n--instance XmlPickler Gpx where-  xpickle = xpWrap (gpx, \(Gpx n) -> n) (xpElem "gpx" xpickle)--instance Value Gpx GpxType where-  value (Gpx x) = x-  setValue x (Gpx _) = gpx x---- | Reads a GPX file into a list of @Gpx@ values removing whitespace.-readGpxFile :: FilePath -> IO [Gpx]-readGpxFile = runX . xunpickleDocument (xpickle :: PU Gpx) [withRemoveWS yes, withValidate          no]---- | Reads 0 or more GPX files into a list of @Gpx@ values removing whitespace.-readGpxFiles :: [FilePath] -> IO [Gpx]-readGpxFiles = fmap join . mapM readGpxFile---- | Reads a GPX file, executes the given function on the XML, then writes the given file.-interactGpxIO' :: SysConfigList -- ^ The options for reading the GPX file.-                  -> FilePath -- ^ The GPX file to read.-                  -> (Gpx -> IO Gpx) -- ^ The function to execute on the XML that is read.-                  -> SysConfigList -- ^ The options for writing the GPX file.-                  -> FilePath -- ^ The GPX file to write.-                  -> IO ()-interactGpxIO' froma from f toa to = runX (xunpickleDocument (xpickle :: PU Gpx) froma from >>> arrIO f >>> xpickleDocument (xpickle :: PU Gpx) toa to) >> return ()---- | Reads a GPX file, executes the given functions on the XML, then writes the given file.-interactsGpxIO' :: SysConfigList -- ^ The options for reading the GPX file.-                   -> FilePath -- ^ The GPX file to read.-                   -> [Gpx -> IO Gpx] -- ^ The function to execute on the XML that is read.-                   -> SysConfigList -- ^ The options for writing the GPX file.-                   -> FilePath -- ^ The GPX file to write.-                   -> IO ()-interactsGpxIO' froma from = interactGpxIO' froma from . sumIO'---- | Reads a GPX file removing whitespace, executes the given function on the XML, then writes the given file with indentation.-interactGpxIO :: FilePath -- ^ The GPX file to read.-                 -> (Gpx -> IO Gpx) -- ^ The function to execute on the XML that is read.-                 -> FilePath -- ^ The GPX file to write.-                 -> IO ()-interactGpxIO from f = interactGpxIO' [] from f []---- | Reads a GPX file removing whitespace, executes the given functions on the XML, then writes the given file with indentation.-interactsGpxIO :: FilePath -- ^ The GPX file to read.-                  -> [Gpx -> IO Gpx] -- ^ The function to execute on the XML that is read.-                  -> FilePath -- ^ The GPX file to write.-                  -> IO ()-interactsGpxIO from = interactGpxIO from . sumIO'---- | Reads a GPX file, executes the given function on the XML, then writes the given file.-interactGpx' :: SysConfigList -- ^ The options for reading the GPX file.-                -> FilePath -- ^ The GPX file to read.-                -> (Gpx -> Gpx) -- ^ The function to execute on the XML that is read.-                -> SysConfigList -- ^ The options for writing the GPX file.-                -> FilePath -- ^ The GPX file to write.-                -> IO ()-interactGpx' froma from f = interactGpxIO' froma from (return . f)---- | Reads a GPX file, executes the given functions on the XML, then writes the given file.-interactsGpx' :: SysConfigList -- ^ The options for reading the GPX file.-                 -> FilePath -- ^ The GPX file to read.-                 -> [Gpx -> Gpx] -- ^ The functions to execute on the XML that is read.-                 -> SysConfigList -- ^ The options for writing the GPX file.-                 -> FilePath -- ^ The GPX file to write.-                 -> IO ()-interactsGpx' froma from = interactGpx' froma from . sum'---- | Reads a GPX file removing whitespace, executes the given function on the XML, then writes the given file with indentation.-interactGpx :: FilePath -- ^ The GPX file to read.-               -> (Gpx -> Gpx) -- ^ The function to execute on the XML that is read.-               -> FilePath -- ^ The GPX file to write.-               -> IO ()-interactGpx from f = interactGpxIO from (return . f)---- | Reads a GPX file removing whitespace, executes the given functions on the XML, then writes the given file with indentation.-interactsGpx :: FilePath -- ^ The GPX file to read.-                -> [Gpx -> Gpx] -- ^ The function to execute on the XML that is read.-                -> FilePath -- ^ The GPX file to write.-                -> IO ()-interactsGpx from = interactGpx from . sum'---- not exported--sum' :: [a -> a] -> a -> a-sum' = foldl' (.) id--sumIO' :: (Monad m) => [a -> m a] -> a -> m a-sumIO' = foldl' (>=>) return
− Data/Geo/GPX/GpxType.hs
@@ -1,126 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances  #-}---- | Complex Type: @gpxType@ <http://www.topografix.com/GPX/1/1/#type_gpxType>-module Data.Geo.GPX.GpxType(-                             GpxType,-                             gpxType-                           ) where--import Data.Geo.GPX.MetadataType-import Data.Geo.GPX.WptType-import Data.Geo.GPX.RteType-import Data.Geo.GPX.TrkType-import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.PersonType-import Data.Geo.GPX.Accessor.Version-import Data.Geo.GPX.Accessor.Creator-import Data.Geo.GPX.Accessor.Metadata-import Data.Geo.GPX.Accessor.Wpts-import Data.Geo.GPX.Accessor.Rtes-import Data.Geo.GPX.Accessor.Trks-import Data.Geo.GPX.Accessor.Extensions-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Desc-import Data.Geo.GPX.Accessor.Author-import Data.Geo.GPX.Accessor.Copyright-import Data.Geo.GPX.Accessor.Links-import Data.Geo.GPX.Accessor.Time-import Data.Geo.GPX.Accessor.Keywords-import Data.Geo.GPX.Accessor.Bounds-import Data.Geo.GPX.Accessor.Rtepts-import Data.Geo.GPX.Accessor.Trkpts-import Text.XML.HXT.Core-import Text.XML.HXT.Extras-import Data.Maybe--data GpxType = GpxType String String (Maybe MetadataType) [WptType] [RteType] [TrkType] (Maybe ExtensionsType)-  deriving (Eq, Show)--gpxType :: String -- ^ The version.-           -> String -- ^ The creator.-           -> Maybe MetadataType -- ^ The metadata.-           -> [WptType] -- ^ The waypoints (wpt).-           -> [RteType] -- ^ The routes (rte).-           -> [TrkType] -- ^ The tracks (trk).-           -> Maybe ExtensionsType -- ^ The extensions.-           -> GpxType-gpxType = GpxType--instance XmlPickler GpxType where-  xpickle = xpWrap (\(version', creator', metadata', wpt', rte', trk', extensions') -> gpxType version' creator' metadata' wpt' rte' trk' extensions',-              \(GpxType 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)))--instance Version GpxType where-  version (GpxType x _ _ _ _ _ _) = x-  setVersion a (GpxType _ b c d e f g) = gpxType a b c d e f g--instance Creator GpxType where-  creator (GpxType _ x _ _ _ _ _) = x-  setCreator b (GpxType a _ c d e f g) = gpxType a b c d e f g--instance Metadata GpxType where-  metadata (GpxType _ _ x _ _ _ _) = x-  setMetadata c (GpxType a b _ d e f g) = gpxType a b c d e f g--instance Wpts GpxType where-  wpts (GpxType _ _ _ x _ _ _) = x-  setWpts d (GpxType a b c _ e f g) = gpxType a b c d e f g--instance Rtes GpxType where-  rtes (GpxType _ _ _ _ x _ _) = x-  setRtes e (GpxType a b c d _ f g) = gpxType a b c d e f g--instance Trks GpxType where-  trks (GpxType _ _ _ _ _ x _) = x-  setTrks f (GpxType a b c d e _ g) = gpxType a b c d e f g--instance Extensions GpxType where-  extensions (GpxType _ _ _ _ _ _ x) = x-  setExtensions g (GpxType a b c d e f _) = gpxType a b c d e f g--instance Name GpxType where-  name = (name =<<) . metadata-  setName x (GpxType a b c d e f g) = gpxType a b (fmap (setName x) c) d e f g--instance Desc GpxType where-  desc = (desc =<<) . metadata-  setDesc x (GpxType a b c d e f g) = gpxType a b (fmap (setDesc x) c) d e f g--instance Author GpxType (Maybe PersonType) where-  author = (author =<<) . metadata-  setAuthor x (GpxType a b c d e f g) = gpxType a b (fmap (setAuthor x) c) d e f g--instance Copyright GpxType where-  copyright = (copyright =<<) . metadata-  setCopyright x (GpxType a b c d e f g) = gpxType a b (fmap (setCopyright x) c) d e f g--instance Links GpxType where-  links = (links =<<) . maybeToList . metadata-  setLinks x (GpxType a b c d e f g) = gpxType a b (fmap (setLinks x) c) d e f g--instance Time GpxType where-  time = (time =<<) . metadata-  setTime x (GpxType a b c d e f g) = gpxType a b (fmap (setTime x) c) d e f g--instance Keywords GpxType where-  keywords = (keywords =<<) . metadata-  setKeywords x (GpxType a b c d e f g) = gpxType a b (fmap (setKeywords x) c) d e f g--instance Bounds GpxType where-  bounds = (bounds =<<) . metadata-  setBounds x (GpxType a b c d e f g) = gpxType a b (fmap (setBounds x) c) d e f g--instance Rtepts GpxType where-  rtepts = (rtepts =<<) . rtes-  setRtepts x (GpxType a b c d e f g) = gpxType a b c d (fmap (setRtepts x) e) f g--instance Trkpts GpxType where-  trkpts = (trkpts =<<) . trks-  setTrkpts x (GpxType a b c d e f g) = gpxType a b c d e (fmap (setTrkpts x) f) g
− Data/Geo/GPX/LatitudeType.hs
@@ -1,28 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, GeneralizedNewtypeDeriving #-}---- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType>-module Data.Geo.GPX.LatitudeType(-                                  LatitudeType,-                                  latitudeType-                                ) where--import Data.Geo.GPX.Accessor.Value-import Data.Fixed-import Text.XML.HXT.Core--newtype LatitudeType = LatitudeType Double-  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)--latitudeType :: Double -- ^ The value which will be between -90 and 90 (values out of the range are truncated using a modulus operation).-                -> LatitudeType-latitudeType n = LatitudeType ((n + 90) `mod'` 180 - 90)--instance XmlPickler LatitudeType where-  xpickle = xpWrap (latitudeType, \(LatitudeType n) -> n) xpPrim--instance Show LatitudeType where-  show (LatitudeType n) = show n--instance Value LatitudeType Double where-  value (LatitudeType x) = x-  setValue x (LatitudeType _) = latitudeType x
− Data/Geo/GPX/LinkType.hs
@@ -1,22 +0,0 @@--- | Complex Type: @linkType@ <http://www.topografix.com/GPX/1/1/#type_linkType>-module Data.Geo.GPX.LinkType(-                              LinkType,-                              linkType-                            ) where--import Text.XML.HXT.Core--data LinkType = LinkType String (Maybe String) (Maybe String)-  deriving (Eq, Show)--linkType :: String -- ^ The href.-            -> Maybe String -- ^ The text.-            -> Maybe String -- ^ The type.-            -> LinkType-linkType = LinkType--instance XmlPickler LinkType where-  xpickle = xpWrap (\(href, text, type') -> linkType href text type', \(LinkType href text type') -> (href, text, type')) (xpTriple-              (xpAttr "href" xpText)-              (xpOption (xpElem "text" xpText))-              (xpOption (xpElem "type" xpText)))
− Data/Geo/GPX/LongitudeType.hs
@@ -1,28 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, GeneralizedNewtypeDeriving #-}---- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType>-module Data.Geo.GPX.LongitudeType(-                                   LongitudeType,-                                   longitudeType-                                 ) where--import Data.Geo.GPX.Accessor.Value-import Data.Fixed-import Text.XML.HXT.Core--newtype LongitudeType = LongitudeType Double-  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)--longitudeType :: Double -- ^ The value which will be between -180 and 180 (values out of the range are truncated using a modulus operation).-                 -> LongitudeType-longitudeType n = LongitudeType ((n + 180) `mod'` 360 - 180)--instance XmlPickler LongitudeType where-  xpickle = xpWrap (longitudeType, \(LongitudeType n) -> n) xpPrim--instance Show LongitudeType where-  show (LongitudeType n) = show n--instance Value LongitudeType Double where-  value (LongitudeType x) = x-  setValue x (LongitudeType _) = longitudeType x
− Data/Geo/GPX/MetadataType.hs
@@ -1,88 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances  #-}---- | Complex Type: @metadataType@ <http://www.topografix.com/GPX/1/1/#type_metadataType>-module Data.Geo.GPX.MetadataType(-                                  MetadataType,-                                  metadataType-                                ) where--import Data.Geo.GPX.PersonType-import Data.Geo.GPX.CopyrightType-import Data.Geo.GPX.LinkType-import Data.Geo.GPX.BoundsType-import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Desc-import Data.Geo.GPX.Accessor.Author-import Data.Geo.GPX.Accessor.Copyright-import Data.Geo.GPX.Accessor.Links-import Data.Geo.GPX.Accessor.Time-import Data.Geo.GPX.Accessor.Keywords-import Data.Geo.GPX.Accessor.Bounds-import Data.Geo.GPX.Accessor.Extensions-import Text.XML.HXT.Core-import Text.XML.HXT.Extras-import Text.XML.XSD.DateTime--data MetadataType = MetadataType (Maybe String) (Maybe String) (Maybe PersonType) (Maybe CopyrightType) [LinkType] (Maybe DateTime) (Maybe String) (Maybe BoundsType) (Maybe ExtensionsType)-  deriving (Eq, Show)--metadataType :: Maybe String -- ^ The name.-                -> Maybe String -- ^ The desc.-                -> Maybe PersonType -- ^ The author.-                -> Maybe CopyrightType -- ^ The copyright.-                -> [LinkType] -- ^ The links (link).-                -> Maybe DateTime -- ^ The time.-                -> Maybe String -- ^ The keywords.-                -> Maybe BoundsType -- ^ The bounds.-                -> Maybe ExtensionsType -- ^ The extensions-                -> MetadataType-metadataType = MetadataType--instance XmlPickler MetadataType where-  xpickle = xpWrap (\(a, b, c, d, e, f, g, h, i) -> metadataType a b c d e f g h i, \(MetadataType 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)))--instance Name MetadataType where-  name (MetadataType x _ _ _ _ _ _ _ _) = x-  setName a (MetadataType _ b c d e f g h i) = metadataType a b c d e f g h i--instance Desc MetadataType where-  desc (MetadataType _ x _ _ _ _ _ _ _) = x-  setDesc b (MetadataType a _ c d e f g h i) = metadataType a b c d e f g h i--instance Author MetadataType (Maybe PersonType) where-  author (MetadataType _ _ x _ _ _ _ _ _) = x-  setAuthor c (MetadataType a b _ d e f g h i) = metadataType a b c d e f g h i--instance Copyright MetadataType where-  copyright (MetadataType _ _ _ x _ _ _ _ _) = x-  setCopyright d (MetadataType a b c _ e f g h i) = metadataType a b c d e f g h i--instance Links MetadataType where-  links (MetadataType _ _ _ _ x _ _ _ _) = x-  setLinks e (MetadataType a b c d _ f g h i) = metadataType a b c d e f g h i--instance Time MetadataType where-  time (MetadataType _ _ _ _ _ x _ _ _) = x-  setTime f (MetadataType a b c d e _ g h i) = metadataType a b c d e f g h i--instance Keywords MetadataType where-  keywords (MetadataType _ _ _ _ _ _ x _ _) = x-  setKeywords g (MetadataType a b c d e f _ h i) = metadataType a b c d e f g h i--instance Bounds MetadataType where-  bounds (MetadataType _ _ _ _ _ _ _ x _) = x-  setBounds h (MetadataType a b c d e f g _ i) = metadataType a b c d e f g h i--instance Extensions MetadataType where-  extensions (MetadataType _ _ _ _ _ _ _ _ x) = x-  setExtensions i (MetadataType a b c d e f g h _) = metadataType a b c d e f g h i
− Data/Geo/GPX/PersonType.hs
@@ -1,39 +0,0 @@--- | Complex Type: @personType@ <http://www.topografix.com/GPX/1/1/#type_personType>-module Data.Geo.GPX.PersonType(-                                PersonType,-                                personType-                              ) where--import Data.Geo.GPX.EmailType-import Data.Geo.GPX.LinkType-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Email-import Data.Geo.GPX.Accessor.Link-import Text.XML.HXT.Core--data PersonType = PersonType (Maybe String) (Maybe EmailType) (Maybe LinkType)-  deriving (Eq, Show)--personType :: Maybe String -- ^ The name.-              -> Maybe EmailType -- ^ The email.-              -> Maybe LinkType -- ^ The link.-              -> PersonType-personType = PersonType--instance XmlPickler PersonType where-  xpickle = xpWrap (\(name', email', link') -> personType name' email' link', \(PersonType name' email' link') -> (name', email', link')) (xpTriple-              (xpOption (xpElem "name" xpText))-              (xpOption (xpElem "email" xpickle))-              (xpOption (xpElem "link" xpickle)))--instance Name PersonType where-  name (PersonType x _ _) = x-  setName a (PersonType _ b c) = personType a b c--instance Email PersonType where-  email (PersonType _ x _) = x-  setEmail b (PersonType a _ c) = personType a b c--instance Link PersonType where-  link (PersonType _ _ x) = x-  setLink c (PersonType a b _) = personType a b c
− Data/Geo/GPX/PtType.hs
@@ -1,48 +0,0 @@--- | Complex Type: @ptType@ <http://www.topografix.com/GPX/1/1/#type_ptType>-module Data.Geo.GPX.PtType(-                            PtType,-                            ptType-                          ) where--import Data.Geo.GPX.LatitudeType-import Data.Geo.GPX.LongitudeType-import Data.Geo.GPX.Accessor.Lat-import Data.Geo.GPX.Accessor.Lon-import Data.Geo.GPX.Accessor.Ele-import Data.Geo.GPX.Accessor.Time-import Text.XML.HXT.Core-import Text.XML.XSD.DateTime--data PtType = PtType LatitudeType LongitudeType (Maybe Double) (Maybe DateTime)-  deriving (Eq, Show)--ptType :: LatitudeType -- ^ The lat.-          -> LongitudeType -- ^ The lon.-          -> Maybe Double -- ^ The ele.-          -> Maybe DateTime -- ^ The time.-          -> PtType-ptType = PtType--instance XmlPickler PtType where-  xpickle = xpWrap (\(lat', lon', ele', time') -> ptType lat' lon' ele' time',-                   \(PtType 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))))--instance Lat PtType where-  lat (PtType x _ _ _) = x-  setLat a (PtType _ b c d) = ptType a b c d--instance Lon PtType where-  lon (PtType _ x _ _) = x-  setLon b (PtType a _ c d) = ptType a b c d--instance Ele PtType where-  ele (PtType _ _ x _) = x-  setEle c (PtType a b _ d) = ptType a b c d--instance Time PtType where-  time (PtType _ _ _ x) = x-  setTime d (PtType a b c _) = ptType a b c d
− Data/Geo/GPX/PtsegType.hs
@@ -1,23 +0,0 @@--- | Complex Type: @ptsegType@ <http://www.topografix.com/GPX/1/1/#type_ptsegType>-module Data.Geo.GPX.PtsegType(-                               PtsegType,-                               ptsegType-                             ) where--import Data.Geo.GPX.PtType-import Data.Geo.GPX.Accessor.Pts-import Text.XML.HXT.Core--newtype PtsegType = PtsegType [PtType]-  deriving (Eq, Show)--ptsegType :: [PtType] -- ^ The points (pt).-             -> PtsegType-ptsegType = PtsegType--instance XmlPickler PtsegType where-  xpickle = xpWrap (ptsegType, \(PtsegType k) -> k) (xpList (xpElem "pt" xpickle))--instance Pts PtsegType where-  pts (PtsegType x) = x-  setPts x (PtsegType _) = ptsegType x
− Data/Geo/GPX/RteType.hs
@@ -1,83 +0,0 @@--- | Complex Type: @rteType@ <http://www.topografix.com/GPX/1/1/#type_rteType>-module Data.Geo.GPX.RteType(-                             RteType,-                             rteType-                           ) where--import Data.Geo.GPX.WptType-import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.LinkType-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Cmt-import Data.Geo.GPX.Accessor.Desc-import Data.Geo.GPX.Accessor.Src-import Data.Geo.GPX.Accessor.Links-import Data.Geo.GPX.Accessor.Number-import Data.Geo.GPX.Accessor.Type-import Data.Geo.GPX.Accessor.Extensions-import Data.Geo.GPX.Accessor.Rtepts-import Text.XML.HXT.Core-import Text.XML.HXT.Extras--data RteType = RteType (Maybe String) (Maybe String) (Maybe String) (Maybe String) [LinkType] (Maybe Int) (Maybe String) (Maybe ExtensionsType) [WptType]-  deriving (Eq, Show)--rteType :: Maybe String -- ^ The name.-           -> Maybe String -- ^ The cmt.-           -> Maybe String -- ^ The desc.-           -> Maybe String -- ^ The src.-           -> [LinkType] -- ^ The links (link).-           -> Maybe Int -- ^ The number.-           -> Maybe String -- ^ The type.-           -> Maybe ExtensionsType -- ^ The extensions.-           -> [WptType] -- ^ The route points (rtept).-           -> RteType-rteType a b c d e f = RteType a b c d e (fmap abs f)--instance XmlPickler RteType where-  xpickle = xpWrap (\(a, b, c, d, e, f, g, h, i) -> rteType a b c d e f g h i, \(RteType 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)))--instance Name RteType where-  name (RteType x _ _ _ _ _ _ _ _) = x-  setName a (RteType _ b c d e f g h i) = rteType a b c d e f g h i--instance Cmt RteType where-  cmt (RteType _ x _ _ _ _ _ _ _) = x-  setCmt b (RteType a _ c d e f g h i) = rteType a b c d e f g h i--instance Desc RteType where-  desc (RteType _ _ x _ _ _ _ _ _) = x-  setDesc c (RteType a b _ d e f g h i) = rteType a b c d e f g h i--instance Src RteType where-  src (RteType _ _ _ x _ _ _ _ _) = x-  setSrc d (RteType a b c _ e f g h i) = rteType a b c d e f g h i--instance Links RteType where-  links (RteType _ _ _ _ x _ _ _ _) = x-  setLinks e (RteType a b c d _ f g h i) = rteType a b c d e f g h i--instance Number RteType where-  number (RteType _ _ _ _ _ x _ _ _) = x-  setNumber f (RteType a b c d e _ g h i) = rteType a b c d e f g h i--instance Type RteType where-  type' (RteType _ _ _ _ _ _ x _ _) = x-  setType g (RteType a b c d e f _ h i) = rteType a b c d e f g h i--instance Extensions RteType where-  extensions (RteType _ _ _ _ _ _ _ x _) = x-  setExtensions h (RteType a b c d e f g _ i) = rteType a b c d e f g h i--instance Rtepts RteType where-  rtepts (RteType _ _ _ _ _ _ _ _ x) = x-  setRtepts i (RteType a b c d e f g h _) = rteType a b c d e f g h i
− Data/Geo/GPX/TrkType.hs
@@ -1,89 +0,0 @@--- | Complex Type: @trkType@ <http://www.topografix.com/GPX/1/1/#type_trkType>-module Data.Geo.GPX.TrkType(-                             TrkType,-                             trkType-                           ) where--import Data.Geo.GPX.TrksegType-import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.LinkType-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Cmt-import Data.Geo.GPX.Accessor.Desc-import Data.Geo.GPX.Accessor.Src-import Data.Geo.GPX.Accessor.Links-import Data.Geo.GPX.Accessor.Number-import Data.Geo.GPX.Accessor.Type-import Data.Geo.GPX.Accessor.Extensions-import Data.Geo.GPX.Accessor.Trksegs-import Data.Geo.GPX.Accessor.Trkpts-import Text.XML.HXT.Core-import Text.XML.HXT.Extras--data TrkType = TrkType (Maybe String) (Maybe String) (Maybe String) (Maybe String) [LinkType] (Maybe Int) (Maybe String) (Maybe ExtensionsType) [TrksegType]-  deriving (Eq, Show)--trkType :: Maybe String -- ^ The name.-           -> Maybe String -- ^ The cmt.-           -> Maybe String -- ^ The desc.-           -> Maybe String -- ^ The src.-           -> [LinkType] -- ^ The links (link).-           -> Maybe Int -- ^ The number.-           -> Maybe String -- ^ The type.-           -> Maybe ExtensionsType -- ^ The extensions.-           -> [TrksegType] -- ^ The track segments (trkseg).-           -> TrkType-trkType a b c d e f = TrkType a b c d e (fmap abs f)--instance XmlPickler TrkType where-  xpickle = xpWrap (\(a, b, c, d, e, f, g, h, i) -> trkType a b c d e f g h i, \(TrkType 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)))--instance Name TrkType where-  name (TrkType x _ _ _ _ _ _ _ _) = x-  setName a (TrkType _ b c d e f g h i) = trkType a b c d e f g h i--instance Cmt TrkType where-  cmt (TrkType _ x _ _ _ _ _ _ _) = x-  setCmt b (TrkType a _ c d e f g h i) = trkType a b c d e f g h i--instance Desc TrkType where-  desc (TrkType _ _ x _ _ _ _ _ _) = x-  setDesc c (TrkType a b _ d e f g h i) = trkType a b c d e f g h i--instance Src TrkType where-  src (TrkType _ _ _ x _ _ _ _ _) = x-  setSrc d (TrkType a b c _ e f g h i) = trkType a b c d e f g h i--instance Links TrkType where-  links (TrkType _ _ _ _ x _ _ _ _) = x-  setLinks e (TrkType a b c d _ f g h i) = trkType a b c d e f g h i--instance Number TrkType where-  number (TrkType _ _ _ _ _ x _ _ _) = x-  setNumber f (TrkType a b c d e _ g h i) = trkType a b c d e f g h i--instance Type TrkType where-  type' (TrkType _ _ _ _ _ _ x _ _) = x-  setType g (TrkType a b c d e f _ h i) = trkType a b c d e f g h i--instance Extensions TrkType where-  extensions (TrkType _ _ _ _ _ _ _ x _) = x-  setExtensions h (TrkType a b c d e f g _ i) = trkType a b c d e f g h i--instance Trksegs TrkType where-  trksegs (TrkType _ _ _ _ _ _ _ _ x) = x-  setTrksegs i (TrkType a b c d e f g h _) = trkType a b c d e f g h i--instance Trkpts TrkType where-  trkpts = (trkpts =<<) . trksegs-  setTrkpts x (TrkType a b c d e f g h i) = trkType a b c d e f g h (fmap (setTrkpts x) i)-
− Data/Geo/GPX/TrksegType.hs
@@ -1,32 +0,0 @@--- | Complex Type: @trksegType@ <http://www.topografix.com/GPX/1/1/#type_trksegType>-module Data.Geo.GPX.TrksegType(-                                TrksegType,-                                trksegType-                              ) where--import Data.Geo.GPX.WptType-import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.Accessor.Trkpts-import Data.Geo.GPX.Accessor.Extensions-import Text.XML.HXT.Core--data TrksegType = TrksegType [WptType] (Maybe ExtensionsType)-  deriving (Eq, Show)--trksegType :: [WptType] -- ^ The track points (trkpt).-              -> Maybe ExtensionsType -- ^ The extensions.-              -> TrksegType-trksegType = TrksegType--instance XmlPickler TrksegType where-  xpickle = xpWrap (uncurry trksegType, \(TrksegType trkpt' extensions') -> (trkpt', extensions')) (xpPair-              (xpList (xpElem "trkpt" xpickle))-              (xpOption (xpElem "extensions" xpickle)))--instance Trkpts TrksegType where-  trkpts (TrksegType x _) = x-  setTrkpts a (TrksegType _ b) = trksegType a b--instance Extensions TrksegType where-  extensions (TrksegType _ x) = x-  setExtensions b (TrksegType a _) = trksegType a b
− Data/Geo/GPX/Util/Remove.hs
@@ -1,44 +0,0 @@--- | Utility functions for removing elements of GPX files.-module Data.Geo.GPX.Util.Remove(-                                 removeWpts,-                                 removeTrks,-                                 removeRtes,-                                 removeMetadata,-                                 removeExtensions-                               ) where--import Data.Geo.GPX.Accessor.Wpts-import Data.Geo.GPX.Accessor.Rtes-import Data.Geo.GPX.Accessor.Trks-import Data.Geo.GPX.Accessor.Metadata-import Data.Geo.GPX.Accessor.Extensions---- | Removes all waypoints (wpt) elements from the given value.-removeWpts :: (Wpts a) =>-              a-              -> a-removeWpts = usingWpts (const [])---- | Removes all tracks (trk) elements from the given value.-removeTrks :: (Trks a) =>-              a-              -> a-removeTrks = usingTrks (const [])---- | Removes all routes (rte) elements from the given value.-removeRtes :: (Rtes a) =>-              a-              -> a-removeRtes = usingRtes (const [])---- | Removes the metadata element from the given value.-removeMetadata :: (Metadata a) =>-                  a-                  -> a-removeMetadata = usingMetadata (const Nothing)---- | Removes the extensions element from the given value.-removeExtensions :: (Extensions a) =>-                    a-                    -> a-removeExtensions = usingExtensions (const Nothing)
− Data/Geo/GPX/Util/Reverse.hs
@@ -1,47 +0,0 @@--- | Reversing element lists of a GPX files.-module Data.Geo.GPX.Util.Reverse(-                                  reverseRtes,-                                  reverseTrks,-                                  reverseTrksegs,-                                  reverseWpts,-                                  reverseConservingTime-                                ) where--import Data.Geo.GPX.Accessor.Trks-import Data.Geo.GPX.Accessor.Trkpts-import Data.Geo.GPX.Accessor.Trksegs-import Data.Geo.GPX.Accessor.Wpts-import Data.Geo.GPX.Accessor.Rtes-import Data.Geo.GPX.Accessor.Rtepts-import Data.Geo.GPX.Accessor.Time-import Control.Applicative---- | Reverses a list of routes (rte).-reverseRtes :: (Rtes a) =>-               a-               -> a-reverseRtes = usingRtes (map (usingRtepts reverse) . reverse)---- | Reverses a list of tracks (trk).-reverseTrks :: (Trks a) =>-               a-               -> a-reverseTrks = usingTrks (map reverseTrksegs . reverse)---- | Reverses a list of track segments (trkseg).-reverseTrksegs :: (Trksegs a) =>-                  a-                  -> a-reverseTrksegs = usingTrksegs (map (usingTrkpts reverse) . reverse)---- | Reverses a list of waypoints (wpt).-reverseWpts :: (Wpts a) =>-               a-               -> a-reverseWpts = usingWpts reverse---- | Reverses a list of elements with a time, however, the time is not reversed.-reverseConservingTime :: (Time a) =>-                         [a]-                         -> [a]-reverseConservingTime = zipWith setTime . map time <*> reverse
− Data/Geo/GPX/WptType.hs
@@ -1,226 +0,0 @@--- | Complex Type: @wptType@ <http://www.topografix.com/GPX/1/1/#type_wptType>-module Data.Geo.GPX.WptType(-                             WptType,-                             wptType,-                             wptType'-                           ) where--import Data.Geo.GPX.LatitudeType-import Data.Geo.GPX.LongitudeType-import Data.Geo.GPX.DegreesType-import Data.Geo.GPX.LinkType-import Data.Geo.GPX.FixType-import Data.Geo.GPX.DgpsStationType-import Data.Geo.GPX.ExtensionsType-import Data.Geo.GPX.Accessor.Lat-import Data.Geo.GPX.Accessor.Lon-import Data.Geo.GPX.Accessor.Ele-import Data.Geo.GPX.Accessor.Time-import Data.Geo.GPX.Accessor.Magvar-import Data.Geo.GPX.Accessor.Geoidheight-import Data.Geo.GPX.Accessor.Name-import Data.Geo.GPX.Accessor.Cmt-import Data.Geo.GPX.Accessor.Desc-import Data.Geo.GPX.Accessor.Src-import Data.Geo.GPX.Accessor.Links-import Data.Geo.GPX.Accessor.Sym-import Data.Geo.GPX.Accessor.Type-import Data.Geo.GPX.Accessor.Fix-import Data.Geo.GPX.Accessor.Sat-import Data.Geo.GPX.Accessor.Hdop-import Data.Geo.GPX.Accessor.Vdop-import Data.Geo.GPX.Accessor.Pdop-import Data.Geo.GPX.Accessor.Ageofdgpsdata-import Data.Geo.GPX.Accessor.Dgpsid-import Data.Geo.GPX.Accessor.Extensions-import Data.Geo.GPX.Accessor.Latlon-import Data.Geo.GPX.Accessor.Value-import Text.XML.HXT.Core-import Text.XML.HXT.Extras-import Text.XML.XSD.DateTime--data WptType = WptType LatitudeType-                       LongitudeType-                       (Maybe Double)-                       (Maybe DateTime)-                       (Maybe DegreesType)-                       (Maybe Double)-                       (Maybe String)-                       (Maybe String)-                       (Maybe String)-                       (Maybe String)-                       [LinkType]-                       (Maybe String)-                       (Maybe String)-                       (Maybe FixType)-                       (Maybe Int)-                       (Maybe Double)-                       (Maybe Double)-                       (Maybe Double)-                       (Maybe Double)-                       (Maybe DgpsStationType)-                       (Maybe ExtensionsType)-  deriving (Eq, Show)--wptType :: LatitudeType -- ^ The lat.-           -> LongitudeType -- ^ The lon.-           -> Maybe Double -- ^ The ele.-           -> Maybe DateTime -- ^ The time.-           -> Maybe DegreesType -- ^ The magvar.-           -> Maybe Double -- ^ The geoidheight.-           -> Maybe String -- ^ The name.-           -> Maybe String -- ^ The cmt.-           -> Maybe String -- ^ The desc.-           -> Maybe String -- ^ The src.-           -> [LinkType] -- ^ The links (link).-           -> Maybe String -- ^ The sym.-           -> Maybe String -- ^ The type.-           -> Maybe FixType -- ^ The fix.-           -> Maybe Int -- ^ The sat.-           -> Maybe Double -- ^ The hdop.-           -> Maybe Double -- ^ The vdop.-           -> Maybe Double -- ^ The pdop.-           -> Maybe Double -- ^ The ageofdgpsdata.-           -> Maybe DgpsStationType -- ^ The dgpsid.-           -> Maybe ExtensionsType -- ^ The extensions.-           -> WptType-wptType a b c d e f g h i j k l m n o p = WptType 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.-wptType' :: LatitudeType -- ^ The lat.-            -> LongitudeType -- ^ The lon.-            -> WptType-wptType' lat' lon' = wptType lat'-                           lon'-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           []-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing-                           Nothing--instance XmlPickler WptType where-  xpickle = xpWrap (\(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> wptType a b c d e f g h i j k l m n o p q r s t u,-                   \(WptType 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)))--instance Lat WptType where-  lat (WptType x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setLat a (WptType _ b c d e f g h i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Lon WptType where-  lon (WptType _ x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setLon b (WptType a _ c d e f g h i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Ele WptType where-  ele (WptType _ _ x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setEle c (WptType a b _ d e f g h i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Time WptType where-  time (WptType _ _ _ x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setTime d (WptType a b c _ e f g h i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Magvar WptType where-  magvar (WptType _ _ _ _ x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setMagvar e (WptType a b c d _ f g h i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Geoidheight WptType where-  geoidheight (WptType _ _ _ _ _ x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setGeoidheight f (WptType a b c d e _ g h i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Name WptType where-  name (WptType _ _ _ _ _ _ x _ _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setName g (WptType a b c d e f _ h i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Cmt WptType where-  cmt (WptType _ _ _ _ _ _ _ x _ _ _ _ _ _ _ _ _ _ _ _ _) = x-  setCmt h (WptType a b c d e f g _ i j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Desc WptType where-  desc (WptType _ _ _ _ _ _ _ _ x _ _ _ _ _ _ _ _ _ _ _ _) = x-  setDesc i (WptType a b c d e f g h _ j k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Src WptType where-  src (WptType _ _ _ _ _ _ _ _ _ x _ _ _ _ _ _ _ _ _ _ _) = x-  setSrc j (WptType a b c d e f g h i _ k l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Links WptType where-  links (WptType _ _ _ _ _ _ _ _ _ _ x _ _ _ _ _ _ _ _ _ _) = x-  setLinks k (WptType a b c d e f g h i j _ l m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Sym WptType where-  sym (WptType _ _ _ _ _ _ _ _ _ _ _ x _ _ _ _ _ _ _ _ _) = x-  setSym l (WptType a b c d e f g h i j k _ m n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Type WptType where-  type' (WptType _ _ _ _ _ _ _ _ _ _ _ x _ _ _ _ _ _ _ _ _) = x-  setType m (WptType a b c d e f g h i j k l _ n o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Fix WptType where-  fix (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ x _ _ _ _ _ _ _) = x-  setFix n (WptType a b c d e f g h i j k l m _ o p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Sat WptType where-  sat (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ x _ _ _ _ _ _) = x-  setSat o (WptType a b c d e f g h i j k l m n _ p q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Hdop WptType where-  hdop (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x _ _ _ _ _) = x-  setHdop p (WptType a b c d e f g h i j k l m n o _ q r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Vdop WptType where-  vdop (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x _ _ _ _) = x-  setVdop q (WptType a b c d e f g h i j k l m n o p _ r s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Pdop WptType where-  pdop (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x _ _ _) = x-  setPdop r (WptType a b c d e f g h i j k l m n o p q _ s t u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Ageofdgpsdata WptType where-  ageofdgpsdata (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x _ _) = x-  setAgeofdgpsdata s (WptType a b c d e f g h i j k l m n o p q r _ t u) = wptType a b c d e f g h i j k l m n o p q r s t u----instance Dgpsid WptType where-  dgpsid (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x _) = x-  setDgpsid t (WptType a b c d e f g h i j k l m n o p q r s _ u) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Extensions WptType where-  extensions (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x) = x-  setExtensions u (WptType a b c d e f g h i j k l m n o p q r s t _) = wptType a b c d e f g h i j k l m n o p q r s t u--instance Latlon WptType where-  latlon e = (value (lat e), value (lon e))-  setLatlon (a, b) (WptType _ _ c d e f g h i j k l m n o p q r s t u) = wptType (latitudeType a) (longitudeType b) c d e f g h i j k l m n o p q r s t u
GPX.cabal view
@@ -1,98 +1,103 @@ Name:                GPX-Version:             0.5+Version:             0.6.0 License:             BSD3 License-File:        LICENSE Synopsis:            Parse GPX files Description:         Parse GPS Exchange (GPX) files using HXT into data structures.-Homepage:            http://code.google.com/p/geo-gpx/+Homepage:            https://github.com/tonymorris/geo-gpx Category:            Utils-Author:              Tony Morris-Maintainer:          code@tmorris.net-Copyright:           2009, 2010 Tony Morris-build-type:          Simple-cabal-version:       >= 1.2+Author:              Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+Maintainer:          Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+Copyright:           2009 -- 2012 Tony Morris+Build-Type:          Simple+Cabal-Version:       >= 1.6+Source-Repository    head+  Type:              git+  Location:          git@github.com:tonymorris/geo-gpx.git -Flag small_base-  Description:     Choose the new, split-up base package. +Flag                 small_base+  Description:       Choose the new, split-up base package.+ Library-  if flag(small_base)-    Build-Depends: base < 5 && >= 3, hxt >= 9.1, hxt-extras >= 0.4.1, containers, xsd-  else-    Build-Depends: base < 5 && >= 3, hxt, hxt-extras, containers, xsd+  Build-Depends:     base < 5 && >= 3+                     , hxt >= 9+                     , containers+                     , comonad-transformers+                     , data-lens+                     , xsd -  GHC-Options:    -Wall-  Exposed-Modules: Data.Geo.GPX-                   Data.Geo.GPX.DgpsStationType-                   Data.Geo.GPX.FixType-                   Data.Geo.GPX.DegreesType-                   Data.Geo.GPX.LongitudeType-                   Data.Geo.GPX.LatitudeType-                   Data.Geo.GPX.BoundsType-                   Data.Geo.GPX.ExtensionsType-                   Data.Geo.GPX.PtType-                   Data.Geo.GPX.PtsegType-                   Data.Geo.GPX.EmailType-                   Data.Geo.GPX.LinkType-                   Data.Geo.GPX.PersonType-                   Data.Geo.GPX.CopyrightType-                   Data.Geo.GPX.WptType-                   Data.Geo.GPX.TrksegType-                   Data.Geo.GPX.TrkType-                   Data.Geo.GPX.RteType-                   Data.Geo.GPX.MetadataType-                   Data.Geo.GPX.GpxType-                   Data.Geo.GPX.Gpx-                   Data.Geo.GPX.Accessor.Accessor-                   Data.Geo.GPX.Accessor.Minlat-                   Data.Geo.GPX.Accessor.Maxlat-                   Data.Geo.GPX.Accessor.Minlon-                   Data.Geo.GPX.Accessor.Maxlon-                   Data.Geo.GPX.Accessor.Author-                   Data.Geo.GPX.Accessor.Year-                   Data.Geo.GPX.Accessor.License-                   Data.Geo.GPX.Accessor.Value-                   Data.Geo.GPX.Accessor.Id-                   Data.Geo.GPX.Accessor.Domain-                   Data.Geo.GPX.Accessor.Version-                   Data.Geo.GPX.Accessor.Creator-                   Data.Geo.GPX.Accessor.Metadata-                   Data.Geo.GPX.Accessor.Wpts-                   Data.Geo.GPX.Accessor.Rtes-                   Data.Geo.GPX.Accessor.Trks-                   Data.Geo.GPX.Accessor.Extensions-                   Data.Geo.GPX.Accessor.Href-                   Data.Geo.GPX.Accessor.Text-                   Data.Geo.GPX.Accessor.Type-                   Data.Geo.GPX.Accessor.Name-                   Data.Geo.GPX.Accessor.Desc-                   Data.Geo.GPX.Accessor.Copyright-                   Data.Geo.GPX.Accessor.Links-                   Data.Geo.GPX.Accessor.Time-                   Data.Geo.GPX.Accessor.Keywords-                   Data.Geo.GPX.Accessor.Bounds-                   Data.Geo.GPX.Accessor.Lat-                   Data.Geo.GPX.Accessor.Lon-                   Data.Geo.GPX.Accessor.Ele-                   Data.Geo.GPX.Accessor.Magvar-                   Data.Geo.GPX.Accessor.Geoidheight-                   Data.Geo.GPX.Accessor.Cmt-                   Data.Geo.GPX.Accessor.Src-                   Data.Geo.GPX.Accessor.Sym-                   Data.Geo.GPX.Accessor.Fix-                   Data.Geo.GPX.Accessor.Sat-                   Data.Geo.GPX.Accessor.Hdop-                   Data.Geo.GPX.Accessor.Vdop-                   Data.Geo.GPX.Accessor.Pdop-                   Data.Geo.GPX.Accessor.Ageofdgpsdata-                   Data.Geo.GPX.Accessor.Dgpsid-                   Data.Geo.GPX.Accessor.Email-                   Data.Geo.GPX.Accessor.Link-                   Data.Geo.GPX.Accessor.Pts-                   Data.Geo.GPX.Accessor.Number-                   Data.Geo.GPX.Accessor.Rtepts-                   Data.Geo.GPX.Accessor.Trkpts-                   Data.Geo.GPX.Accessor.Trksegs-                   Data.Geo.GPX.Accessor.Latlon-                   Data.Geo.GPX.Util.Remove-                   Data.Geo.GPX.Util.Reverse+  GHC-Options:      -Wall+                    -fno-warn-name-shadowing++  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.Lens.MinlatL+                     Data.Geo.GPX.Lens.MaxlatL+                     Data.Geo.GPX.Lens.MinlonL+                     Data.Geo.GPX.Lens.MaxlonL+                     Data.Geo.GPX.Lens.AuthorL+                     Data.Geo.GPX.Lens.YearL+                     Data.Geo.GPX.Lens.LicenseL+                     Data.Geo.GPX.Lens.IdL+                     Data.Geo.GPX.Lens.DomainL+                     Data.Geo.GPX.Lens.VersionL+                     Data.Geo.GPX.Lens.CreatorL+                     Data.Geo.GPX.Lens.MetadataL+                     Data.Geo.GPX.Lens.WptsL+                     Data.Geo.GPX.Lens.RtesL+                     Data.Geo.GPX.Lens.TrksL+                     Data.Geo.GPX.Lens.ExtensionsL+                     Data.Geo.GPX.Lens.HrefL+                     Data.Geo.GPX.Lens.TextL+                     Data.Geo.GPX.Lens.TypeL+                     Data.Geo.GPX.Lens.NameL+                     Data.Geo.GPX.Lens.DescL+                     Data.Geo.GPX.Lens.CopyrightL+                     Data.Geo.GPX.Lens.LinksL+                     Data.Geo.GPX.Lens.TimeL+                     Data.Geo.GPX.Lens.KeywordsL+                     Data.Geo.GPX.Lens.BoundsL+                     Data.Geo.GPX.Lens.LatL+                     Data.Geo.GPX.Lens.LonL+                     Data.Geo.GPX.Lens.EleL+                     Data.Geo.GPX.Lens.MagvarL+                     Data.Geo.GPX.Lens.GeoidheightL+                     Data.Geo.GPX.Lens.CmtL+                     Data.Geo.GPX.Lens.SrcL+                     Data.Geo.GPX.Lens.SymL+                     Data.Geo.GPX.Lens.FixL+                     Data.Geo.GPX.Lens.SatL+                     Data.Geo.GPX.Lens.HdopL+                     Data.Geo.GPX.Lens.VdopL+                     Data.Geo.GPX.Lens.PdopL+                     Data.Geo.GPX.Lens.AgeofdgpsdataL+                     Data.Geo.GPX.Lens.DgpsidL+                     Data.Geo.GPX.Lens.EmailL+                     Data.Geo.GPX.Lens.LinkL+                     Data.Geo.GPX.Lens.PtsL+                     Data.Geo.GPX.Lens.NumberL+                     Data.Geo.GPX.Lens.RteptsL+                     Data.Geo.GPX.Lens.TrkptsL+                     Data.Geo.GPX.Lens.TrksegsL+
LICENSE view
@@ -1,4 +1,4 @@-Copyright 2009 Tony Morris+Copyright 2009-2012 Tony Morris  All rights reserved. @@ -24,4 +24,8 @@ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+<<<<<<< HEAD SUCH DAMAGE.+=======+SUCH DAMAGE.+>>>>>>> 0522b176aea72e24e49511488be59280c9dc4527
+ Setup.hs view
@@ -0,0 +1,3 @@+import Distribution.Simple+main = defaultMain+
− Setup.lhs
@@ -1,3 +0,0 @@-#!/usr/bin/env runhaskell-> import Distribution.Simple-> main = defaultMain
+ src/Data/Geo/GPX.hs view
@@ -0,0 +1,46 @@+-- | 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.Lens+, module Control.Arrow+) 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.Lens+import Control.Arrow
+ src/Data/Geo/GPX/Bounds.hs view
@@ -0,0 +1,51 @@+-- | 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 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.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 view
@@ -0,0 +1,30 @@+-- | 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 view
@@ -0,0 +1,33 @@+-- | 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 view
@@ -0,0 +1,36 @@+-- | 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 view
@@ -0,0 +1,29 @@+-- | 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 XmlTree+  deriving Eq++extensions :: +  XmlTree+  -> Extensions+extensions =+  Extensions++runExtensions ::+  Extensions+  -> XmlTree+runExtensions (Extensions t) =+  t++instance XmlPickler Extensions where+  xpickle =+    xpWrap (Extensions, \(Extensions t) -> t) xpTree+
+ src/Data/Geo/GPX/Fix.hs view
@@ -0,0 +1,76 @@+-- | 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 view
@@ -0,0 +1,79 @@+{-# 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')) (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 view
@@ -0,0 +1,33 @@+{-# 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/AgeofdgpsdataL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.AgeofdgpsdataL where++import Data.Lens.Common++class AgeofdgpsdataL a where+  ageofdgpsdataL :: Lens a (Maybe Double)+
+ src/Data/Geo/GPX/Lens/AuthorL.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}++module Data.Geo.GPX.Lens.AuthorL where++import Data.Lens.Common++class AuthorL a b | a -> b where+  authorL :: Lens a b+
+ src/Data/Geo/GPX/Lens/BoundsL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.BoundsL where++import Data.Geo.GPX.Bounds+import Data.Lens.Common++class BoundsL a where+  boundsL :: Lens a (Maybe Bounds)+
+ src/Data/Geo/GPX/Lens/CmtL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.CmtL where++import Data.Lens.Common++class CmtL a where+  cmtL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/CopyrightL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.CopyrightL where++import Data.Geo.GPX.Copyright+import Data.Lens.Common++class CopyrightL a where+  copyrightL :: Lens a (Maybe Copyright)+
+ src/Data/Geo/GPX/Lens/CreatorL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.CreatorL where++import Data.Lens.Common++class CreatorL a where+  creatorL :: Lens a String+
+ src/Data/Geo/GPX/Lens/DescL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.DescL where++import Data.Lens.Common++class DescL a where+  descL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/DgpsidL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.DgpsidL where++import Data.Geo.GPX.DgpsStation+import Data.Lens.Common++class DgpsidL a where+  dgpsidL :: Lens a (Maybe DgpsStation)+
+ src/Data/Geo/GPX/Lens/DomainL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.DomainL where++import Data.Lens.Common++class DomainL a where+  domainL :: Lens a String+
+ src/Data/Geo/GPX/Lens/EleL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.EleL where++import Data.Lens.Common++class EleL a where+  eleL :: Lens a (Maybe Double)+
+ src/Data/Geo/GPX/Lens/EmailL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.EmailL where++import Data.Geo.GPX.Email+import Data.Lens.Common++class EmailL a where+  emailL :: Lens a (Maybe Email)+
+ src/Data/Geo/GPX/Lens/ExtensionsL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.ExtensionsL where++import Data.Geo.GPX.Extensions+import Data.Lens.Common++class ExtensionsL a where+  extensionsL :: Lens a (Maybe Extensions)+
+ src/Data/Geo/GPX/Lens/FixL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.FixL where++import Data.Geo.GPX.Fix+import Data.Lens.Common++class FixL a where+  fixL :: Lens a (Maybe Fix)+
+ src/Data/Geo/GPX/Lens/GeoidheightL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.GeoidheightL where++import Data.Lens.Common++class GeoidheightL a where+  geoidheightL :: Lens a (Maybe Double)+
+ src/Data/Geo/GPX/Lens/HdopL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.HdopL where++import Data.Lens.Common++class HdopL a where+  hdopL :: Lens a (Maybe Double)+
+ src/Data/Geo/GPX/Lens/HrefL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.HrefL where++import Data.Lens.Common++class HrefL a where+  hrefL :: Lens a String+
+ src/Data/Geo/GPX/Lens/IdL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.IdL where++import Data.Lens.Common+import Prelude hiding (id)++class IdL a where+  idL :: Lens a String+
+ src/Data/Geo/GPX/Lens/KeywordsL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.KeywordsL where++import Data.Lens.Common++class KeywordsL a where+  keywordsL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/LatL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.LatL where++import Data.Geo.GPX.Latitude+import Data.Lens.Common++class LatL a where+  latL :: Lens a Latitude+
+ src/Data/Geo/GPX/Lens/LicenseL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.LicenseL where++import Data.Lens.Common++class LicenseL a where+  licenseL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/LinkL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.LinkL where++import Data.Geo.GPX.Link+import Data.Lens.Common++class LinkL a where+  linkL :: Lens a (Maybe Link)+
+ src/Data/Geo/GPX/Lens/LinksL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.LinksL where++import Data.Geo.GPX.Link+import Data.Lens.Common++class LinksL a where+  linksL :: Lens a [Link]+
+ src/Data/Geo/GPX/Lens/LonL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.LonL where++import Data.Geo.GPX.Longitude+import Data.Lens.Common++class LonL a where+  lonL :: Lens a Longitude+
+ src/Data/Geo/GPX/Lens/MagvarL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.MagvarL where++import Data.Geo.GPX.Degrees+import Data.Lens.Common++class MagvarL a where+  magvarL :: Lens a (Maybe Degrees)+
+ src/Data/Geo/GPX/Lens/MaxlatL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.MaxlatL where++import Data.Geo.GPX.Latitude+import Data.Lens.Common++class MaxlatL a where+  maxlatL :: Lens a Latitude+
+ src/Data/Geo/GPX/Lens/MaxlonL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.MaxlonL where++import Data.Geo.GPX.Longitude+import Data.Lens.Common++class MaxlonL a where+  maxlonL :: Lens a Longitude+
+ src/Data/Geo/GPX/Lens/MetadataL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.MetadataL where++import Data.Geo.GPX.Metadata+import Data.Lens.Common++class MetadataL a where+  metadataL :: Lens a (Maybe Metadata)+
+ src/Data/Geo/GPX/Lens/MinlatL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.MinlatL where++import Data.Geo.GPX.Latitude+import Data.Lens.Common++class MinlatL a where+  minlatL :: Lens a Latitude+
+ src/Data/Geo/GPX/Lens/MinlonL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.MinlonL where++import Data.Geo.GPX.Longitude+import Data.Lens.Common++class MinlonL a where+  minlonL :: Lens a Longitude+
+ src/Data/Geo/GPX/Lens/NameL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.NameL where++import Data.Lens.Common++class NameL a where+  nameL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/NumberL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.NumberL where++import Data.Lens.Common++class NumberL a where+  numberL :: Lens a (Maybe Int)+
+ src/Data/Geo/GPX/Lens/PdopL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.PdopL where++import Data.Lens.Common++class PdopL a where+  pdopL :: Lens a (Maybe Double)+
+ src/Data/Geo/GPX/Lens/PtsL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.PtsL where++import Data.Geo.GPX.Pt+import Data.Lens.Common++class PtsL a where+  ptsL :: Lens a [Pt]+
+ src/Data/Geo/GPX/Lens/RteptsL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.RteptsL where++import Data.Geo.GPX.Wpt+import Data.Lens.Common++class RteptsL a where+  rteptsL :: Lens a [Wpt]+
+ src/Data/Geo/GPX/Lens/RtesL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.RtesL where++import Data.Geo.GPX.Rte+import Data.Lens.Common++class RtesL a where+  rtesL :: Lens a [Rte]+
+ src/Data/Geo/GPX/Lens/SatL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.SatL where++import Data.Lens.Common++class SatL a where+  satL :: Lens a (Maybe Int)+
+ src/Data/Geo/GPX/Lens/SrcL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.SrcL where++import Data.Lens.Common++class SrcL a where+  srcL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/SymL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.SymL where++import Data.Lens.Common++class SymL a where+  symL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/TextL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.TextL where++import Data.Lens.Common++class TextL a where+  textL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/TimeL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.TimeL where++import Text.XML.XSD.DateTime+import Data.Lens.Common++class TimeL a where+  timeL :: Lens a (Maybe DateTime)+
+ src/Data/Geo/GPX/Lens/TrkptsL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.TrkptsL where++import Data.Geo.GPX.Wpt+import Data.Lens.Common++class TrkptsL a where+  trkptsL :: Lens a [Wpt]+
+ src/Data/Geo/GPX/Lens/TrksL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.TrksL where++import Data.Geo.GPX.Trk+import Data.Lens.Common++class TrksL a where+  trksL :: Lens a [Trk]+
+ src/Data/Geo/GPX/Lens/TrksegsL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.TrksegsL where++import Data.Geo.GPX.Trkseg+import Data.Lens.Common++class TrksegsL a where+  trksegsL :: Lens a [Trkseg]+
+ src/Data/Geo/GPX/Lens/TypeL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.TypeL where++import Data.Lens.Common++class TypeL a where+  typeL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Lens/VdopL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.VdopL where++import Data.Lens.Common++class VdopL a where+  vdopL :: Lens a (Maybe Double)+
+ src/Data/Geo/GPX/Lens/VersionL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.VersionL where++import Data.Lens.Common++class VersionL a where+  versionL :: Lens a String+
+ src/Data/Geo/GPX/Lens/WptsL.hs view
@@ -0,0 +1,8 @@+module Data.Geo.GPX.Lens.WptsL where++import Data.Geo.GPX.Wpt+import Data.Lens.Common++class WptsL a where+  wptsL :: Lens a [Wpt]+
+ src/Data/Geo/GPX/Lens/YearL.hs view
@@ -0,0 +1,7 @@+module Data.Geo.GPX.Lens.YearL where++import Data.Lens.Common++class YearL a where+  yearL :: Lens a (Maybe String)+
+ src/Data/Geo/GPX/Link.hs view
@@ -0,0 +1,43 @@+-- | 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 view
@@ -0,0 +1,33 @@+{-# 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 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.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 view
@@ -0,0 +1,45 @@+-- | 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 view
@@ -0,0 +1,54 @@+-- | 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 view
@@ -0,0 +1,29 @@+-- | 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 view
@@ -0,0 +1,88 @@+-- | 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 view
@@ -0,0 +1,88 @@+-- | 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 view
@@ -0,0 +1,38 @@+-- | 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/Wpt.hs view
@@ -0,0 +1,230 @@+-- | 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)))+