mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-19 13:02:13 +01:00
54 lines
829 B
Haskell
54 lines
829 B
Haskell
{-# LANGUAGE TemplateHaskell #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
import Data.MessagePack
|
|
|
|
data T
|
|
= A Int String
|
|
| B Double
|
|
deriving (Show, Eq)
|
|
|
|
deriveObject True ''T
|
|
|
|
data U
|
|
= C { c1 :: Int, c2 :: String }
|
|
| D { z1 :: Double }
|
|
deriving (Show, Eq)
|
|
|
|
deriveObject True ''U
|
|
|
|
data V
|
|
= E String | F
|
|
deriving (Show, Eq)
|
|
|
|
deriveObject True ''V
|
|
|
|
data W a
|
|
= G a String
|
|
| H { hHoge :: Int, h_age :: a }
|
|
deriving (Show, Eq)
|
|
|
|
deriveObject True ''W
|
|
|
|
test :: (OBJECT a, Show a, Eq a) => a -> IO ()
|
|
test v = do
|
|
let bs = pack v
|
|
print bs
|
|
print (unpack bs == v)
|
|
|
|
let oa = toObject v
|
|
print oa
|
|
print (fromObject oa == v)
|
|
|
|
main :: IO ()
|
|
main = do
|
|
test $ A 123 "hoge"
|
|
test $ B 3.14
|
|
test $ C 123 "hoge"
|
|
test $ D 3.14
|
|
test $ E "hello"
|
|
test $ F
|
|
test $ G (E "hello") "world"
|
|
test $ H 123 F
|
|
return ()
|