{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveLift #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.Avro.Deriving.Lift where import qualified Data.Avro.Schema.Schema as Schema import qualified Data.ByteString as ByteString import qualified Data.HashMap.Strict as HashMap import qualified Data.Text as Text import qualified Data.Vector as Vector import Language.Haskell.TH.Syntax (Lift (..)) instance Lift ByteString.ByteString where lift :: ByteString -> Q Exp lift ByteString b = [| ByteString.pack $(lift $ ByteString.unpack b) |] #if MIN_VERSION_text(1,2,4) #else instance Lift Text.Text where lift :: Text -> Q Exp lift Text t = [| Text.pack $(lift $ Text.unpack t) |] #endif instance Lift a => Lift (Vector.Vector a) where lift :: Vector a -> Q Exp lift Vector a v = [| Vector.fromList $(lift $ Vector.toList v) |] instance (Lift k, Lift v) => Lift (HashMap.HashMap k v) where lift :: HashMap k v -> Q Exp lift HashMap k v m = [| HashMap.fromList $(lift $ HashMap.toList m) |] deriving instance Lift Schema.DefaultValue deriving instance Lift Schema.Field deriving instance Lift Schema.Order deriving instance Lift Schema.TypeName deriving instance Lift Schema.Decimal deriving instance Lift Schema.LogicalTypeBytes deriving instance Lift Schema.LogicalTypeFixed deriving instance Lift Schema.LogicalTypeInt deriving instance Lift Schema.LogicalTypeLong deriving instance Lift Schema.LogicalTypeString deriving instance Lift Schema.Schema