{-# LANGUAGE CPP, TemplateHaskell, DeriveDataTypeable #-}
module HAppS.Data.Proxy where

import HAppS.Data.DeriveAll
import HAppS.Data.Xml
import HAppS.Data.Default

#ifndef __HADDOCK__
$(deriveAll [''Read,''Show,''Default]
  [d| data Proxy t = Proxy |]
 )
#else
data Proxy t = Proxy deriving (Read, Show, Typeable)
#endif


proxy :: t -> Proxy t
proxy _ = Proxy

unProxy :: Proxy t -> t
unProxy _ = undefined

asProxyType :: t -> Proxy t -> t
asProxyType t _ = t