{-# LANGUAGE TemplateHaskell, QuasiQuotes #-} module Data.Binary.SerializationLength.TH ( hasFixedSerializationLength ) where import Language.Haskell.TH import Data.Binary.SerializationLength.Class hasFixedSerializationLength :: Name -> Integer -> DecsQ -- | Shorthand for defining instances of 'HasFixedSerializationLength', morally: -- -- > hasFixedSerializationLength typeName byteN = [d| -- > instance HasFixedSerializiationLength $(typeName) where -- > type SerializationLength $(typeName) = $(byteN) -- > |] hasFixedSerializationLength (return . ConT -> t) (return . LitT . NumTyLit -> i) = [d| instance HasFixedSerializationLength $(t) where type SerializationLength $(t) = $(i) |]