module Data.Geo.OSM.Accessor.BoundOrs where
import Data.Geo.OSM.Bound
import Data.Geo.OSM.Bounds
class BoundOrs a where
boundOrs :: a -> x -> (Bound -> x) -> (Bounds -> x) -> x
setBoundOrs :: Maybe (Either Bound Bounds) -> a -> a
setBound :: Bound -> a -> a
setBound = setBoundOrs . Just . Left
setBounds :: Bounds -> a -> a
setBounds = setBoundOrs . Just . Right
usingBoundOrs :: a -> (Maybe (Either Bound Bounds) -> Maybe (Either Bound Bounds)) -> a
usingBoundOrs a f = setBoundOrs (f (boundOrs a Nothing (Just . Left) (Just . Right))) a