{-# LANGUAGE CPP #-}

-----------------------------------------------------------------------------
-- |
-- Module      :  SAI.Data.Generics.Shape
-- Copyright   :  (c) Andrew Seniuk, 2014
-- License     :  BSD-style (see the LICENSE file)
-- 
-- Maintainer  :  rasfar@gmail.com
-- Stability   :  experimental
-- Portability :  non-portable (uses Data.Generics.Basics)
--
-- This package provides SYB shape support: generic mapping to
-- homogeneous types, and related features.  Complements existing
-- Uniplate and TH shape libraries.  See <http://www.fremissant.net/shape-syb>
-- for more information.
--
-- The present module simply re-exports all relevant modules.
--
-----------------------------------------------------------------------------

module SAI.Data.Generics.Shape (

  -- * Generic shape
  module SAI.Data.Generics.Shape.SYB ,

  -- * Filtering with some structure preservation
  module SAI.Data.Generics.Shape.SYB.Filter ,

  -- * Generic shape, variants for handling GHC API staged types
  module SAI.Data.Generics.Shape.SYB.GHC ,

  --- * Core SYB exports (user will need mkQ at least)
  module Data.Generics ,

 ) where

------------------------------------------------------------------------------

import Data.Generics

import SAI.Data.Generics.Shape.SYB
--import SAI.Data.Generics.Shape.SYB hiding ( R )

import SAI.Data.Generics.Shape.SYB.Filter

-- XXX Could consider a compiler switch for this actually.
import SAI.Data.Generics.Shape.SYB.GHC