2011-11-18 16:49:12 +09:00
|
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
2010-09-23 00:04:34 +09:00
|
|
|
|
|
|
|
import Data.MessagePack
|
|
|
|
|
|
|
|
data T
|
|
|
|
= A Int String
|
|
|
|
| B Double
|
2010-09-24 03:49:31 +09:00
|
|
|
deriving (Show, Eq)
|
2010-09-23 00:04:34 +09:00
|
|
|
|
2011-11-18 16:49:12 +09:00
|
|
|
deriveObject True ''T
|
2010-09-23 00:04:34 +09:00
|
|
|
|
2010-09-24 01:24:13 +09:00
|
|
|
data U
|
|
|
|
= C { c1 :: Int, c2 :: String }
|
2011-11-17 17:40:10 +09:00
|
|
|
| D { z1 :: Double }
|
2010-09-24 03:49:31 +09:00
|
|
|
deriving (Show, Eq)
|
2010-09-24 01:24:13 +09:00
|
|
|
|
2011-11-18 16:49:12 +09:00
|
|
|
deriveObject True ''U
|
2010-09-24 01:24:13 +09:00
|
|
|
|
2010-09-24 03:49:31 +09:00
|
|
|
data V
|
|
|
|
= E String | F
|
|
|
|
deriving (Show, Eq)
|
|
|
|
|
2011-11-18 16:49:12 +09:00
|
|
|
deriveObject True ''V
|
2010-09-24 03:49:31 +09:00
|
|
|
|
2011-11-17 18:27:37 +09:00
|
|
|
data W a
|
|
|
|
= G a String
|
|
|
|
| H { hHoge :: Int, h_age :: a }
|
|
|
|
deriving (Show, Eq)
|
|
|
|
|
2011-11-18 16:49:12 +09:00
|
|
|
deriveObject True ''W
|
2011-11-17 18:27:37 +09:00
|
|
|
|
2010-09-24 03:49:31 +09:00
|
|
|
test :: (OBJECT a, Show a, Eq a) => a -> IO ()
|
|
|
|
test v = do
|
|
|
|
let bs = pack v
|
2010-09-23 00:04:34 +09:00
|
|
|
print bs
|
2010-09-24 03:49:31 +09:00
|
|
|
print (unpack bs == v)
|
|
|
|
|
|
|
|
let oa = toObject v
|
2010-09-24 01:24:13 +09:00
|
|
|
print oa
|
2010-09-24 03:49:31 +09:00
|
|
|
print (fromObject oa == v)
|
|
|
|
|
2011-11-17 17:15:05 +09:00
|
|
|
main :: IO ()
|
2010-09-24 03:49:31 +09:00
|
|
|
main = do
|
|
|
|
test $ A 123 "hoge"
|
|
|
|
test $ B 3.14
|
|
|
|
test $ C 123 "hoge"
|
|
|
|
test $ D 3.14
|
|
|
|
test $ E "hello"
|
|
|
|
test $ F
|
2011-11-17 18:27:37 +09:00
|
|
|
test $ G (E "hello") "world"
|
|
|
|
test $ H 123 F
|
2011-11-17 17:15:05 +09:00
|
|
|
return ()
|