content: {-# LANGUAGE CPP #-}
  {-# LANGUAGE FlexibleInstances #-}
  {-# LANGUAGE TypeSynonymInstances #-}
  -----------------------------------------------------------------------------
  --
  -- Module      :  Language.Javascript.JSaddle.Classes
  -- Copyright   :  (c) Hamish Mackenzie
  -- License     :  MIT
  --
  -- Maintainer  :  Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
  --
  -- | These classes are used to make various JavaScript types
  --   out of whatever we have.  Functions in jsaddle take these as inputs.
  --   This alows implicit casting and eager evaluation.
  --
  -----------------------------------------------------------------------------
  
  module Language.Javascript.JSaddle.Classes (
    -- * Type classes to convert Haskell data to JavaScript
      PToJSVal(..)
    , PFromJSVal(..)
    , ToJSVal(..)
    , FromJSVal(..)
    , ToJSString(..)
    , FromJSString(..)
    , MakeObject(..)
    , MakeArgs(..)
  ) where
  
  #ifdef ghcjs_HOST_OS
  import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
  #else
  import GHCJS.Marshal.Internal (ToJSVal(..), FromJSVal(..))
  #endif
  import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
  import Language.Javascript.JSaddle.Classes.Internal (MakeObject(..), MakeArgs(..))
  import Language.Javascript.JSaddle.Marshal.String (ToJSString(..), FromJSString(..))
  