-- | Allows PostGIS to work with geospatial data enclosed in Traversable
-- data structures with Unboxed Vectors as the most inner structures.
--
-- Example of suitable data types for LineString and Polygon.
--
-- > {-# LANGUAGE TypeFamilies #-}
-- >
-- > import qualified Data.Vector.Unboxed as VU
-- >
-- > type instance Cast (Double, Double, Double) = P3DZ
-- >
-- > instance Castable (Double, Double, Double) where
-- >     toPointND (x, y, z) = Point3DZ x y z
-- >     fromPointND (Point3DZ x y z) = (x, y, z)
-- >
-- > type LineStringData = VU.Vector (Double, Double, Double)
-- > type PolygonData = [VU.Vector (Double, Double, Double)]

module Database.Postgis.Trivial.Unboxed (
    module Database.Postgis.Trivial.Types
  , module Database.Postgis.Trivial.Cast
  , module Database.Postgis.Trivial.Unboxed.PointND
  , module Database.Postgis.Trivial.Unboxed.Geometry
) where

import Database.Postgis.Trivial.Types
import Database.Postgis.Trivial.Cast
import Database.Postgis.Trivial.Unboxed.PointND
import Database.Postgis.Trivial.Unboxed.Geometry