module Control.Workflow.GenSerializer where
import Data.ByteString.Lazy.Char8 as B
import Data.RefSerialize(Context)
import Data.Map as M
import Control.Concurrent
import System.IO.Unsafe
class (Monad writerm, Monad readerm)
=> Serializer writerm readerm a | a -> writerm readerm where
serial :: a -> writerm ()
deserial :: readerm a
class (DynSerializer w r a, DynSerializer w r b) => TwoSerializer w r a b
instance (DynSerializer w r a, DynSerializer w r b) => TwoSerializer w r a b
class (DynSerializer w r a, DynSerializer w r b,DynSerializer w r c) => ThreeSerializer w r a b c
instance (DynSerializer w r a, DynSerializer w r b, DynSerializer w r c) => ThreeSerializer w r a b c
class (Monad writerm
,Monad readerm)
=> RunSerializer writerm readerm
| writerm -> readerm
, readerm -> writerm
where
runSerial :: writerm () -> ByteString
runDeserial :: Serializer writerm readerm a => readerm a -> ByteString -> a
class (Serializer w r a, RunSerializer w r) => DynSerializer w r a | a -> w r where
serialM :: a -> w ByteString
serialM = return . runSerial . serial
fromDynData :: ByteString ->(Context, ByteString) -> a
fromDynData s _= runDeserial deserial s