1f80c0ba14aa3bf4526d68767c26116eb30ecaa8Christian Maeder{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}
8d97ef4f234681b11bb5924bd4d03adef858d2d2Christian Maeder{- |
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerModule : ./Haskell/BaseATC.hs
06a671f19b2f76097ca4997268954721a831c527Christian MaederDescription : basic ShATermConvertible instances
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian MaederCopyright : (c) Christian Maeder, Uni Bremen 2005-2006
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu ProdescuLicense : GPLv2 or higher, see LICENSE.txt
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
3f69b6948966979163bdfe8331c38833d5d90ecdChristian MaederMaintainer : Christian.Maeder@dfki.de
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian MaederStability : provisional
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian MaederPortability : portable
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maedera few basic 'ShATermConvertible' instances needed by "Haskell.ATC_Haskell"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder-}
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
f1c6047a6f86f75e1effd7dfa833e0f5bbd16330Christian Maedermodule Haskell.BaseATC () where
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maederimport ATerm.Lib
705d04a6d3b01afd249f53397e5cbfa76fc0e179Christian Maederimport Data.Typeable
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederimport SrcLoc
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
1f80c0ba14aa3bf4526d68767c26116eb30ecaa8Christian Maederderiving instance Typeable SrcLoc
8d97ef4f234681b11bb5924bd4d03adef858d2d2Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederinstance ShATermConvertible SrcLoc where
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder toShATermAux att0 xv = case xv of
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder SrcLoc a b c d -> do
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder (att1, a') <- toShATerm' att0 a
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder (att2, b') <- toShATerm' att1 b
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder (att3, c') <- toShATerm' att2 c
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder (att4, d') <- toShATerm' att3 d
1f80c0ba14aa3bf4526d68767c26116eb30ecaa8Christian Maeder return $ addATerm (ShAAppl "SrcLoc" [a', b', c', d'] []) att4
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder fromShATermAux ix att0 = case getShATerm ix att0 of
1f80c0ba14aa3bf4526d68767c26116eb30ecaa8Christian Maeder ShAAppl "SrcLoc" [a, b, c, d] _ ->
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder case fromShATerm' a att0 of { (att1, a') ->
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder case fromShATerm' b att1 of { (att2, b') ->
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder case fromShATerm' c att2 of { (att3, c') ->
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder case fromShATerm' d att3 of { (att4, d') ->
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder (att4, SrcLoc a' b' c' d') }}}}
64f2afbaadbbc9ffc4d10eb413325777f7e7fef8Christian Maeder u -> fromShATermError "SrcLoc" u