# Define the access restrictions
# The following tags define the restrictions:
# mkgmap:bicycle
# mkgmap:foot
# mkgmap:car
# mkgmap:truck
# mkgmap:taxi
# mkgmap:bus
# mkgmap:emergency
# mkgmap:delivery
# A class is not allowed to use the way if its tag is set to 'no'

# First set access settings with high priority.
#
# In case a way is tagged with 
#    highway=motorway;access=yes 
# we assume that foot and bikes are not allowed anyhow.

highway=* & motorroad=yes                  { add bicycle=no; add foot=no; }
highway=motorway | highway=motorway_link   { add bicycle=no; add foot=no; }

(access=agricultural | access=forestry) { set access=no; add foot=yes }

# Now fill the access tree (http://wiki.openstreetmap.org/wiki/Key:access) 
# This is required so that subsequent rules do not add a tag (bicycle) which is already defined by a higher tag (vehicle) 
access=*             { add foot='${access}'; add vehicle='${access}'; }
vehicle=*            { add bicycle='${vehicle}'; add motor_vehicle='${vehicle}'; }
motor_vehicle=*      { add motorcar='${motor_vehicle}'; add goods='${motor_vehicle}'; add hgv='${motor_vehicle}'; add psv='${motor_vehicle}'; add emergency='${motor_vehicle}'; }
psv=*                { add taxi='${psv}'; add bus='${psv}'; }


# Include country specific access rules that are derived from the highway type
include 'inc/access_country';

# Add common access rules that are derived from the highway type
highway=steps                              { add foot=yes; add access=no }
highway=pedestrian & area!=yes             { add foot=yes; add access=no } 
highway=path                               { add foot=yes; add bicycle=yes; add access=no } 
highway=bridleway                          { add access=no }
highway=cycleway                           { add bicycle=yes; add access=no }
highway=footway                            { add foot=yes; add access=no }
railway=platform                           { add foot=yes; add access=no }

# throughroute cannot be handled differently for different vehicle types
# Therefore we have to choose one vehicle type - and the winner is: motorcar
motorcar=destination  | motorcar=delivery { set mkgmap:throughroute=no; set motorcar=yes } 
access=destination    | access=delivery   { set mkgmap:throughroute=no; set access=yes }

# Normalize all values that indicate a restriction to 'no'
foot=private          | foot=agricultural       | foot=forestry       { set foot=no }
bicycle=private       | bicycle=agricultural    | bicycle=forestry    { set bicycle=no }
motorcar=private      | motorcar=agricultural   | motorcar=forestry   { set motorcar=no }
goods=private         | goods=agricultural      | goods=forestry      { set goods=no }
hgv=private           | hgv=agricultural        | hgv=forestry        { set hgv=no }
bus=private           | bus=agricultural        | bus=forestry        { set bus=no }
taxi=private          | taxi=agricultural       | taxi=forestry       { set taxi=no }
emergency=private     | emergency=agricultural  | emergency=forestry  { set emergency=no }

# Copy the OSM access tags to the mkgmap internal tags
foot=*       { set mkgmap:foot='${foot}' }
bicycle=*    { set mkgmap:bicycle='${bicycle}' }
motorcar=*   { set mkgmap:car='${motorcar}' }
goods=*      { set mkgmap:delivery='${goods}' }
hgv=*        { set mkgmap:truck='${hgv}' }
bus=*        { set mkgmap:bus='${bus}' }
taxi=*       { set mkgmap:taxi='${taxi}' }
emergency=*  { set mkgmap:emergency='${emergency}' }

# The access tag defines all restrictions that are not already set
access=* { addaccess '${access}' }

# Check for carpool lane (they are not really supported yet so these lines are commented)
# hov=* { add carpool='${hov}' }
# (carpool=yes | carpool=designated | carpool=permissive | carpool=official)     { set mkgmap:carpool=yes }

# Don't route through highway=construction, they are considered unusable 
highway=construction {setaccess no}

