{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-missing-fields #-} {-# OPTIONS_GHC -fno-warn-missing-signatures #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} ----------------------------------------------------------------- -- Autogenerated by Thrift Compiler (0.10.0) -- -- -- -- DO NOT EDIT UNLESS YOU ARE SURE YOU KNOW WHAT YOU ARE DOING -- ----------------------------------------------------------------- module Data.Concrete.Autogen.Uuid_Types where import Prelude (($), (.), (>>=), (==), (++)) import qualified Prelude as P import qualified Control.Exception as X import qualified Control.Monad as M ( liftM, ap, when ) import Data.Functor ( (<$>) ) import qualified Data.ByteString.Lazy as LBS import qualified Data.Hashable as H import qualified Data.Int as I import qualified Data.Maybe as M (catMaybes) import qualified Data.Text.Lazy.Encoding as E ( decodeUtf8, encodeUtf8 ) import qualified Data.Text.Lazy as LT import qualified GHC.Generics as G (Generic) import qualified Data.Typeable as TY ( Typeable ) import qualified Data.HashMap.Strict as Map import qualified Data.HashSet as Set import qualified Data.Vector as Vector import qualified Test.QuickCheck.Arbitrary as QC ( Arbitrary(..) ) import qualified Test.QuickCheck as QC ( elements ) import qualified Thrift as T import qualified Thrift.Types as T import qualified Thrift.Arbitraries as T data UUID = UUID { uUID_uuidString :: LT.Text } deriving (P.Show,P.Eq,G.Generic,TY.Typeable) instance H.Hashable UUID where hashWithSalt salt record = salt `H.hashWithSalt` uUID_uuidString record instance QC.Arbitrary UUID where arbitrary = M.liftM UUID (QC.arbitrary) shrink obj | obj == default_UUID = [] | P.otherwise = M.catMaybes [ if obj == default_UUID{uUID_uuidString = uUID_uuidString obj} then P.Nothing else P.Just $ default_UUID{uUID_uuidString = uUID_uuidString obj} ] from_UUID :: UUID -> T.ThriftVal from_UUID record = T.TStruct $ Map.fromList $ M.catMaybes [ (\_v2 -> P.Just (1, ("uuidString",T.TString $ E.encodeUtf8 _v2))) $ uUID_uuidString record ] write_UUID :: (T.Protocol p, T.Transport t) => p t -> UUID -> P.IO () write_UUID oprot record = T.writeVal oprot $ from_UUID record encode_UUID :: (T.Protocol p, T.Transport t) => p t -> UUID -> LBS.ByteString encode_UUID oprot record = T.serializeVal oprot $ from_UUID record to_UUID :: T.ThriftVal -> UUID to_UUID (T.TStruct fields) = UUID{ uUID_uuidString = P.maybe (P.error "Missing required field: uuidString") (\(_,_val4) -> (case _val4 of {T.TString _val5 -> E.decodeUtf8 _val5; _ -> P.error "wrong type"})) (Map.lookup (1) fields) } to_UUID _ = P.error "not a struct" read_UUID :: (T.Transport t, T.Protocol p) => p t -> P.IO UUID read_UUID iprot = to_UUID <$> T.readVal iprot (T.T_STRUCT typemap_UUID) decode_UUID :: (T.Protocol p, T.Transport t) => p t -> LBS.ByteString -> UUID decode_UUID iprot bs = to_UUID $ T.deserializeVal iprot (T.T_STRUCT typemap_UUID) bs typemap_UUID :: T.TypeMap typemap_UUID = Map.fromList [(1,("uuidString",T.T_STRING))] default_UUID :: UUID default_UUID = UUID{ uUID_uuidString = ""}