-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Parse OpenStreetMap files
--   
--   Parse OpenStreetMap http://osm.org/ files using HXT into data
--   structures. The Data.Geo.OSM module is the core module that exports
--   all others.
@package OSM
@version 0.6.4


-- | Values with a <tt>changeset</tt> optional string accessor.
module Data.Geo.OSM.Lens.ChangesetL
class ChangesetL a
changesetL :: ChangesetL a => Lens a (Maybe String)


-- | Values with a <tt>role</tt> string accessor.
module Data.Geo.OSM.Lens.RoleL
class RoleL a
roleL :: RoleL a => Lens a String


-- | Values with a <tt>visible</tt> boolean accessor.
module Data.Geo.OSM.Lens.VisibleL
class VisibleL a
visibleL :: VisibleL a => Lens a Bool


-- | Values with a <tt>display_name</tt> string accessor.
module Data.Geo.OSM.Lens.DisplayNameL
class DisplayNameL a
displayNameL :: DisplayNameL a => Lens a String


-- | Values with a <tt>k</tt> string accessor.
module Data.Geo.OSM.Lens.KL
class KL a
kL :: KL a => Lens a String


-- | Values with a <tt>account_created</tt> string accessor.
module Data.Geo.OSM.Lens.AccountCreatedL
class AccountCreatedL a
accountCreatedL :: AccountCreatedL a => Lens a String


-- | Values with a <tt>minimum</tt> string accessor.
module Data.Geo.OSM.Lens.MinimumL
class MinimumL a
minimumL :: MinimumL a => Lens a String


-- | Values with a <tt>v</tt> string accessor.
module Data.Geo.OSM.Lens.VL
class VL a
vL :: VL a => Lens a String


-- | Values with a <tt>uid</tt> optional string accessor.
module Data.Geo.OSM.Lens.UidL
class UidL a
uidL :: UidL a => Lens a (Maybe String)


-- | Values with a <tt>ref</tt> string accessor.
module Data.Geo.OSM.Lens.RefL
class RefL a
refL :: RefL a => Lens a String


-- | Values with a <tt>generator</tt> optional string accessor.
module Data.Geo.OSM.Lens.GeneratorL
class GeneratorL a
generatorL :: GeneratorL a => Lens a (Maybe String)


-- | Values with a <tt>per_page</tt> string accessor.
module Data.Geo.OSM.Lens.PerPageL
class PerPageL a
perPageL :: PerPageL a => Lens a String


-- | Values with a <tt>zoom</tt> string accessor.
module Data.Geo.OSM.Lens.ZoomL
class ZoomL a
zoomL :: ZoomL a => Lens a String


-- | Values with a <tt>timestamp</tt> accessor.
module Data.Geo.OSM.Lens.TimestampL
class TimestampL a b | a -> b
timestampL :: TimestampL a b => Lens a b


-- | Values with a <tt>pending</tt> boolean accessor.
module Data.Geo.OSM.Lens.PendingL
class PendingL a
pendingL :: PendingL a => Lens a Bool

module Data.Geo.OSM.Lens.PublicL
class PublicL a
publicL :: PublicL a => Lens a Bool


-- | Values with a <tt>user</tt> accessor.
module Data.Geo.OSM.Lens.UserL
class UserL a b | a -> b
userL :: UserL a b => Lens a b


-- | Values with a <tt>lon</tt> string accessor.
module Data.Geo.OSM.Lens.LonL
class LonL a
lonL :: LonL a => Lens a String


-- | Values with a <tt>lat</tt> string accessor.
module Data.Geo.OSM.Lens.LatL
class LatL a
latL :: LatL a => Lens a String

module Data.Geo.OSM.Lens.NameL
class NameL a
nameL :: NameL a => Lens a String


-- | Values with a <tt>id</tt> string accessor.
module Data.Geo.OSM.Lens.IdL
class IdL a
idL :: IdL a => Lens a String

module Data.Geo.OSM.Lens.MaxlonL
class MaxlonL a
maxlonL :: MaxlonL a => Lens a String


-- | Values with a <tt>minlon</tt> string accessor.
module Data.Geo.OSM.Lens.MinlonL
class MinlonL a
minlonL :: MinlonL a => Lens a String


-- | Values with a <tt>maxlat</tt> string accessor.
module Data.Geo.OSM.Lens.MaxlatL
class MaxlatL a
maxlatL :: MaxlatL a => Lens a String


-- | Values with a <tt>minlat</tt> string accessor.
module Data.Geo.OSM.Lens.MinlatL
class MinlatL a
minlatL :: MinlatL a => Lens a String


-- | Values with a <tt>origin</tt> optional string accessor.
module Data.Geo.OSM.Lens.OriginL
class OriginL a
originL :: OriginL a => Lens a (Maybe String)


-- | Values with a <tt>box</tt> string accessor.
module Data.Geo.OSM.Lens.BoxL
class BoxL a
boxL :: BoxL a => Lens a String


-- | Values with a <tt>maximum</tt> string accessor.
module Data.Geo.OSM.Lens.MaximumL
class MaximumL a
maximumL :: MaximumL a => Lens a String


-- | Values with a <tt>version</tt> accessor.
module Data.Geo.OSM.Lens.VersionL
class VersionL a b | a -> b
versionL :: VersionL a b => Lens a b


-- | The <tt>waynodes</tt> element of a OSM file.
module Data.Geo.OSM.Waynodes

-- | The <tt>waynodes</tt> element of a OSM file.
data Waynodes

-- | Constructs a <tt>waynodes</tt> with maximum.
waynodes :: String -> Waynodes
instance Eq Waynodes
instance Newtype Waynodes String
instance MaximumL Waynodes
instance Show Waynodes
instance XmlPickler Waynodes


-- | Values with a <tt>waynodes</tt> string accessor.
module Data.Geo.OSM.Lens.WaynodesL
class WaynodesL a
waynodesL :: WaynodesL a => Lens a Waynodes


-- | The <tt>version</tt> element of a OSM file.
module Data.Geo.OSM.Version

-- | The <tt>version</tt> element of a OSM file.
data Version

-- | Constructs a <tt>version</tt> with minimum and maximum.
version :: String -> String -> Version
instance Eq Version
instance MaximumL Version
instance MinimumL Version
instance Show Version
instance XmlPickler Version


-- | The <tt>tracepoints</tt> element of a OSM file.
module Data.Geo.OSM.Tracepoints

-- | The <tt>tracepoints</tt> element of a OSM file.
data Tracepoints

-- | Constructs a <tt>tracepoints</tt> with per_page.
tracepoints :: String -> Tracepoints
instance Eq Tracepoints
instance Newtype Tracepoints String
instance PerPageL Tracepoints
instance Show Tracepoints
instance XmlPickler Tracepoints


-- | Values with a <tt>tracepoints</tt> string accessor.
module Data.Geo.OSM.Lens.TracepointsL
class TracepointsL a
tracepointsL :: TracepointsL a => Lens a Tracepoints


-- | The <tt>tag</tt> element of a OSM file.
module Data.Geo.OSM.Tag

-- | The <tt>tag</tt> element of a OSM file.
data Tag

-- | Constructs a tag with a key and value.
tag :: String -> String -> Tag
instance Eq Tag
instance VL Tag
instance KL Tag
instance Show Tag
instance XmlPickler Tag


-- | Values with a <tt>tags</tt> accessor that is a list of tags.
module Data.Geo.OSM.Lens.TagsL
class TagsL a
tagsL :: TagsL a => Lens a [Tag]


-- | The common attributes between the <tt>node</tt>, <tt>way</tt> and
--   <tt>relation</tt> elements.
module Data.Geo.OSM.NWRCommon

-- | The common attributes between the <tt>node</tt>, <tt>way</tt> and
--   <tt>relation</tt> elements.
data NWRCommon

-- | Constructs with id, list of tags, changeset, visible, user&amp;uid and
--   timestamp.
nwrCommon :: String -> [Tag] -> Maybe String -> Bool -> (Maybe String, Maybe String) -> Maybe String -> NWRCommon
instance Eq NWRCommon
instance TimestampL NWRCommon (Maybe String)
instance UidL NWRCommon
instance UserL NWRCommon (Maybe String)
instance VisibleL NWRCommon
instance ChangesetL NWRCommon
instance TagsL NWRCommon
instance IdL NWRCommon
instance Show NWRCommon
instance XmlPickler NWRCommon


-- | The <tt>preferences</tt> element of a OSM file.
module Data.Geo.OSM.Preferences

-- | The <tt>preferences</tt> element of a OSM file.
data Preferences

-- | Constructs a <tt>preferences</tt> with tags.
preferences :: [Tag] -> Preferences
instance Eq Preferences
instance Newtype Preferences [Tag]
instance TagsL Preferences
instance Show Preferences
instance XmlPickler Preferences


-- | The <tt>node</tt> element of a OSM file.
module Data.Geo.OSM.Node

-- | The <tt>node</tt> element of a OSM file.
data Node

-- | Constructs a node with a lat, lon, id, list of tags, changeset,
--   visible, user&amp;uid and timestamp.
node :: String -> String -> String -> [Tag] -> Maybe String -> Bool -> (Maybe String, Maybe String) -> Maybe String -> Node
instance Eq Node
instance TimestampL Node (Maybe String)
instance UidL Node
instance UserL Node (Maybe String)
instance VisibleL Node
instance ChangesetL Node
instance TagsL Node
instance IdL Node
instance LonL Node
instance LatL Node
instance Show Node
instance XmlPickler Node


-- | The <tt>nd</tt> element of a OSM file.
module Data.Geo.OSM.Nd

-- | The <tt>nd</tt> element of a OSM file.
data Nd

-- | Constructs a nd with a ref.
nd :: String -> Nd
instance Eq Nd
instance Newtype Nd String
instance RefL Nd
instance Show Nd
instance XmlPickler Nd


-- | Values with a <tt>nd</tt> accessor that is a list of <tt>Nd</tt>.
module Data.Geo.OSM.Lens.NdL
class NdL a
ndL :: NdL a => Lens a [Nd]


-- | The <tt>way</tt> element of a OSM file.
module Data.Geo.OSM.Way

-- | The <tt>way</tt> element of a OSM file.
data Way

-- | Constructs a way with a list of nds, id, list of tags, changeset,
--   visible, user&amp;uid and timestamp.
way :: [Nd] -> String -> [Tag] -> Maybe String -> Bool -> (Maybe String, Maybe String) -> Maybe String -> Way
instance Eq Way
instance TimestampL Way (Maybe String)
instance UidL Way
instance UserL Way (Maybe String)
instance VisibleL Way
instance ChangesetL Way
instance TagsL Way
instance IdL Way
instance NdL Way
instance Show Way
instance XmlPickler Way


-- | The <tt>type</tt> attribute of a <tt>member</tt> element of a OSM
--   file.
module Data.Geo.OSM.MemberType

-- | The <tt>type</tt> attribute of a <tt>member</tt> element of a OSM
--   file.
data MemberType

-- | Folds a member-type (catamorphism).
foldMemberType :: MemberType -> x -> x -> x -> x

-- | Constructs a member-type that is a way.
wayType :: MemberType

-- | Constructs a member-type that is a node.
nodeType :: MemberType

-- | Constructs a member-type that is a relation.
relationType :: MemberType
instance Eq MemberType
instance Show MemberType
instance XmlPickler MemberType


-- | Values with a <tt>type</tt> accessor.
module Data.Geo.OSM.Lens.TypeL
class TypeL a
typeL :: TypeL a => Lens a MemberType


-- | The <tt>member</tt> element of a OSM file.
module Data.Geo.OSM.Member

-- | The <tt>member</tt> element of a OSM file.
data Member

-- | Constructs a member with a type, ref and role.
member :: MemberType -> String -> String -> Member
instance Eq Member
instance RoleL Member
instance RefL Member
instance TypeL Member
instance Show Member
instance XmlPickler Member


-- | Values with a <tt>member</tt> accessor that is a list of
--   <tt>Member</tt>.
module Data.Geo.OSM.Lens.MemberL
class MemberL a
memberL :: MemberL a => Lens a [Member]


-- | The <tt>relation</tt> element of a OSM file.
module Data.Geo.OSM.Relation

-- | The <tt>relation</tt> element of a OSM file.
data Relation

-- | Constructs a relation with a list of members, id, list of tags,
--   changeset, visible, user&amp;uid and timestamp.
relation :: [Member] -> String -> [Tag] -> Maybe String -> Bool -> (Maybe String, Maybe String) -> Maybe String -> Relation
instance Eq Relation
instance TimestampL Relation (Maybe String)
instance UidL Relation
instance UserL Relation (Maybe String)
instance VisibleL Relation
instance ChangesetL Relation
instance TagsL Relation
instance IdL Relation
instance MemberL Relation
instance Show Relation
instance XmlPickler Relation


-- | The <tt>node</tt>, <tt>way</tt>, or <tt>relation</tt> element of a OSM
--   file.
module Data.Geo.OSM.NodeWayRelation

-- | The <tt>node</tt>, <tt>way</tt>, or <tt>relation</tt> element of a OSM
--   file.
data NodeWayRelation

-- | Folds a node-way-relation (catamorphism).
foldNodeWayRelation :: NodeWayRelation -> (Node -> x) -> (Way -> x) -> (Relation -> x) -> x

-- | Construct a <tt>way</tt> element value.
way' :: Way -> NodeWayRelation

-- | Construct a <tt>relation</tt> element value.
relation' :: Relation -> NodeWayRelation

-- | Construct a <tt>node</tt> element value.
node' :: Node -> NodeWayRelation

-- | Returns whether the <tt>node</tt>, <tt>way</tt> or <tt>relation</tt>
--   element is a node.
isNode :: NodeWayRelation -> Bool

-- | Returns whether the <tt>node</tt>, <tt>way</tt> or <tt>relation</tt>
--   element is a way.
isWay :: NodeWayRelation -> Bool

-- | Returns whether the <tt>node</tt>, <tt>way</tt> or <tt>relation</tt>
--   element is a relation.
isRelation :: NodeWayRelation -> Bool
instance Eq NodeWayRelation
instance Show NodeWayRelation
instance XmlPickler NodeWayRelation


-- | The <tt>home</tt> element of a OSM file.
module Data.Geo.OSM.Home

-- | The <tt>home</tt> element of a OSM file.
data Home

-- | Constructs a <tt>home</tt> with lat, lon and zoom.
home :: String -> String -> String -> Home
instance Eq Home
instance ZoomL Home
instance LonL Home
instance LatL Home
instance Show Home
instance XmlPickler Home


-- | Values with a <tt>home</tt> optional string accessor.
module Data.Geo.OSM.Lens.HomeL
class HomeL a
homeL :: HomeL a => Lens a (Maybe Home)


-- | The <tt>user</tt> element of a OSM file.
module Data.Geo.OSM.User

-- | The <tt>user</tt> element of a OSM file.
data User

-- | Constructs a <tt>user</tt> with an optional home, display_name and
--   account_created.
user :: Maybe Home -> String -> String -> User
instance Eq User
instance AccountCreatedL User
instance DisplayNameL User
instance HomeL User
instance Show User
instance XmlPickler User


-- | The <tt>gpx_file</tt> element of a OSM file.
module Data.Geo.OSM.GpxFile

-- | The <tt>gpx_file</tt> element of a OSM file.
data GpxFile

-- | Constructs a <tt>gpx_file</tt> with an id, name, lat, lon, user,
--   public, pending and timestamp.
gpxFile :: String -> String -> String -> String -> String -> Bool -> Bool -> String -> GpxFile
instance Eq GpxFile
instance TimestampL GpxFile String
instance PendingL GpxFile
instance PublicL GpxFile
instance UserL GpxFile String
instance LonL GpxFile
instance LatL GpxFile
instance NameL GpxFile
instance IdL GpxFile
instance Show GpxFile
instance XmlPickler GpxFile


-- | The <tt>changeset</tt> element of a OSM file.
module Data.Geo.OSM.Changeset

-- | The <tt>changeset</tt> element of a OSM file.
data Changeset

-- | Constructs a <tt>changeset</tt> with tags.
changeset :: [Tag] -> Changeset
instance Eq Changeset
instance Newtype Changeset [Tag]
instance TagsL Changeset
instance Show Changeset
instance XmlPickler Changeset


-- | The <tt>bounds</tt> element of a OSM file.
module Data.Geo.OSM.Bounds

-- | The <tt>bounds</tt> element of a OSM file.
data Bounds

-- | Constructs a bounds with a minlat, minlon, maxlat, maxlon and origin
--   attributes.
bounds :: String -> String -> String -> String -> Maybe String -> Bounds
instance Eq Bounds
instance OriginL Bounds
instance MaxlonL Bounds
instance MaxlatL Bounds
instance MinlonL Bounds
instance MinlatL Bounds
instance Show Bounds
instance XmlPickler Bounds


-- | The <tt>bound</tt> element of a OSM file.
module Data.Geo.OSM.Bound

-- | The <tt>bound</tt> element of a OSM file.
data Bound

-- | Constructs a bound with a box and origin attributes.
bound :: String -> Maybe String -> Bound
instance Eq Bound
instance OriginL Bound
instance BoxL Bound
instance Show Bound
instance XmlPickler Bound


-- | A bound-option is either a <tt>Bound</tt>, <tt>Bounds</tt> or empty.
module Data.Geo.OSM.BoundOption
data BoundOption
foldBoundOption :: (Bound -> x) -> (Bounds -> x) -> x -> BoundOption -> x
optionBound :: Bound -> BoundOption
optionBounds :: Bounds -> BoundOption
optionEmptyBound :: BoundOption
instance Eq BoundOption


-- | Values with a <tt>bounds</tt> accessor which is either empty, a
--   <tt>Bound</tt> or a <tt>Bounds</tt>.
module Data.Geo.OSM.Lens.BoundsL
class BoundsL a
boundsL :: BoundsL a => Lens a BoundOption


-- | The <tt>area</tt> element of a OSM file.
module Data.Geo.OSM.Area

-- | The <tt>area</tt> element of a OSM file.
data Area

-- | Constructs a <tt>area</tt> with maximum.
area :: String -> Area
instance Eq Area
instance Newtype Area String
instance MaximumL Area
instance Show Area
instance XmlPickler Area


-- | Values with a <tt>area</tt> string accessor.
module Data.Geo.OSM.Lens.AreaL
class AreaL a
areaL :: AreaL a => Lens a Area


-- | The <tt>api</tt> element of a OSM file.
module Data.Geo.OSM.Api

-- | The <tt>api</tt> element of a OSM file.
data Api

-- | Constructs a <tt>api</tt> with version, area, tracepoints and
--   waynodes.
api :: Version -> Area -> Tracepoints -> Waynodes -> Api
instance Eq Api
instance WaynodesL Api
instance TracepointsL Api
instance AreaL Api
instance VersionL Api Version
instance Show Api
instance XmlPickler Api


-- | The children elements of the <tt>osm</tt> element of a OSM file.
module Data.Geo.OSM.Children

-- | The children elements of the <tt>osm</tt> element of a OSM file.
data Children

-- | A <tt>user</tt> element.
osmUser :: User -> Children

-- | A <tt>gpx_file</tt> element.
osmGpxFile :: GpxFile -> Children

-- | A <tt>api</tt> element.
osmApi :: Api -> Children

-- | A <tt>changeset</tt> element.
osmChangeset :: Changeset -> Children

-- | A list of <tt>node</tt>, <tt>way</tt> or <tt>relation</tt> elements.
osmNodeWayRelation :: [NodeWayRelation] -> Children

-- | Folds OSM child elements (catamorphism).
foldChildren :: (User -> a) -> (Preferences -> a) -> (GpxFile -> a) -> (Api -> a) -> (Changeset -> a) -> ([NodeWayRelation] -> a) -> Children -> a
instance Eq Children
instance Show Children
instance XmlPickler Children


-- | Values with node, way or relation children accessor.
module Data.Geo.OSM.Lens.ChildrenL
class ChildrenL a
childrenL :: ChildrenL a => Lens a Children


-- | The <tt>osm</tt> element of a OSM file, which is the root element.
--   <a>http://wiki.openstreetmap.org/wiki/API_v0.6/DTD</a>
module Data.Geo.OSM.OSM

-- | The <tt>osm</tt> element of a OSM file, which is the root element.
data OSM

-- | Constructs a osm with a version, bound or bounds, and node attributes
--   and way or relation elements.
osm :: String -> Maybe String -> Maybe (Either Bound Bounds) -> Children -> OSM

-- | Reads an OSM file into a list of <tt>OSM</tt> values removing
--   whitespace.
readOsmFile :: FilePath -> IO [OSM]

-- | Reads 0 or more OSM files into a list of <tt>OSM</tt> values removing
--   whitespace.
readOsmFiles :: [FilePath] -> IO [OSM]

-- | Reads a OSM file removing whitespace, executes the given function on
--   the XML, then writes the given file with indentation.
interactOSMIO :: (OSM -> IO OSM) -> FilePath -> FilePath -> IO ()

-- | Reads a OSM file removing whitespace, executes the given functions on
--   the XML, then writes the given file with indentation.
interactsOSMIO :: Foldable t => t (OSM -> IO OSM) -> FilePath -> FilePath -> IO ()

-- | Reads a OSM file, executes the given function on the XML, then writes
--   the given file.
interactOSMIO' :: (OSM -> IO OSM) -> SysConfigList -> FilePath -> SysConfigList -> FilePath -> IO ()

-- | Reads a OSM file, executes the given functions on the XML, then writes
--   the given file.
interactsOSMIO' :: Foldable t => t (OSM -> IO OSM) -> SysConfigList -> FilePath -> SysConfigList -> FilePath -> IO ()

-- | Reads a OSM file removing whitespace, executes the given function on
--   the XML, then writes the given file with indentation.
interactOSM :: (OSM -> OSM) -> FilePath -> FilePath -> IO ()

-- | Reads a OSM file removing whitespace, executes the given functions on
--   the XML, then writes the given file with indentation.
interactsOSM :: Foldable t => t (OSM -> OSM) -> FilePath -> FilePath -> IO ()

-- | Reads a OSM file, executes the given function on the XML, then writes
--   the given file.
interactOSM' :: (OSM -> OSM) -> SysConfigList -> FilePath -> SysConfigList -> FilePath -> IO ()

-- | Reads a OSM file, executes the given functions on the XML, then writes
--   the given file.
interactsOSM' :: Foldable t => t (OSM -> OSM) -> SysConfigList -> FilePath -> SysConfigList -> FilePath -> IO ()
instance Eq OSM
instance ChildrenL OSM
instance GeneratorL OSM
instance BoundsL OSM
instance VersionL OSM String
instance Show OSM
instance XmlPickler OSM

module Data.Geo.OSM.Lens


-- | OpenStreetMap API v0.6 DTD
--   <a>http://wiki.openstreetmap.org/wiki/API_v0.6/DTD</a>
module Data.Geo.OSM
