module Unison.Runtime.ANF.Serialize.Tags where import Unison.Runtime.Serialize (Tag (..), unknownTag) data TmTag = VarT | ForceT | AppT | HandleT | ShiftT | MatchT | LitT | NameRefT | NameVarT | LetDirT | LetIndT | BxLitT data FnTag = FVarT | FCombT | FContT | FConT | FReqT | FPrimT | FForeignT data MtTag = MIntT | MTextT | MReqT | MEmptyT | MDataT | MSumT | MNumT data LtTag = IT | NT | FT | TT | CT | LMT | LYT data BLTag = TextT | ListT | TmLinkT | TyLinkT | BytesT | QuoteT | CodeT | BArrT | PosT | NegT | CharT | FloatT | ArrT | CachedCodeT | MapT data VaTag = PartialT | DataT | ContT | BLitT data CoTag = KET | MarkT | PushT instance Tag TmTag where tag2word :: TmTag -> Word8 tag2word = \case TmTag VarT -> Word8 1 TmTag ForceT -> Word8 2 TmTag AppT -> Word8 3 TmTag HandleT -> Word8 4 TmTag ShiftT -> Word8 5 TmTag MatchT -> Word8 6 TmTag LitT -> Word8 7 TmTag NameRefT -> Word8 8 TmTag NameVarT -> Word8 9 TmTag LetDirT -> Word8 10 TmTag LetIndT -> Word8 11 TmTag BxLitT -> Word8 12 word2tag :: forall (m :: * -> *). MonadGet m => Word8 -> m TmTag word2tag = \case Word8 1 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag VarT Word8 2 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag ForceT Word8 3 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag AppT Word8 4 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag HandleT Word8 5 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag ShiftT Word8 6 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag MatchT Word8 7 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag LitT Word8 8 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag NameRefT Word8 9 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag NameVarT Word8 10 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag LetDirT Word8 11 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag LetIndT Word8 12 -> TmTag -> m TmTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure TmTag BxLitT Word8 n -> String -> Word8 -> m TmTag forall (m :: * -> *) a. MonadGet m => String -> Word8 -> m a unknownTag String "TmTag" Word8 n instance Tag FnTag where tag2word :: FnTag -> Word8 tag2word = \case FnTag FVarT -> Word8 0 FnTag FCombT -> Word8 1 FnTag FContT -> Word8 2 FnTag FConT -> Word8 3 FnTag FReqT -> Word8 4 FnTag FPrimT -> Word8 5 FnTag FForeignT -> Word8 6 word2tag :: forall (m :: * -> *). MonadGet m => Word8 -> m FnTag word2tag = \case Word8 0 -> FnTag -> m FnTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure FnTag FVarT Word8 1 -> FnTag -> m FnTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure FnTag FCombT Word8 2 -> FnTag -> m FnTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure FnTag FContT Word8 3 -> FnTag -> m FnTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure FnTag FConT Word8 4 -> FnTag -> m FnTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure FnTag FReqT Word8 5 -> FnTag -> m FnTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure FnTag FPrimT Word8 6 -> FnTag -> m FnTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure FnTag FForeignT Word8 n -> String -> Word8 -> m FnTag forall (m :: * -> *) a. MonadGet m => String -> Word8 -> m a unknownTag String "FnTag" Word8 n instance Tag MtTag where tag2word :: MtTag -> Word8 tag2word = \case MtTag MIntT -> Word8 0 MtTag MTextT -> Word8 1 MtTag MReqT -> Word8 2 MtTag MEmptyT -> Word8 3 MtTag MDataT -> Word8 4 MtTag MSumT -> Word8 5 MtTag MNumT -> Word8 6 word2tag :: forall (m :: * -> *). MonadGet m => Word8 -> m MtTag word2tag = \case Word8 0 -> MtTag -> m MtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MtTag MIntT Word8 1 -> MtTag -> m MtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MtTag MTextT Word8 2 -> MtTag -> m MtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MtTag MReqT Word8 3 -> MtTag -> m MtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MtTag MEmptyT Word8 4 -> MtTag -> m MtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MtTag MDataT Word8 5 -> MtTag -> m MtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MtTag MSumT Word8 6 -> MtTag -> m MtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MtTag MNumT Word8 n -> String -> Word8 -> m MtTag forall (m :: * -> *) a. MonadGet m => String -> Word8 -> m a unknownTag String "MtTag" Word8 n instance Tag LtTag where tag2word :: LtTag -> Word8 tag2word = \case LtTag IT -> Word8 0 LtTag NT -> Word8 1 LtTag FT -> Word8 2 LtTag TT -> Word8 3 LtTag CT -> Word8 4 LtTag LMT -> Word8 5 LtTag LYT -> Word8 6 word2tag :: forall (m :: * -> *). MonadGet m => Word8 -> m LtTag word2tag = \case Word8 0 -> LtTag -> m LtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure LtTag IT Word8 1 -> LtTag -> m LtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure LtTag NT Word8 2 -> LtTag -> m LtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure LtTag FT Word8 3 -> LtTag -> m LtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure LtTag TT Word8 4 -> LtTag -> m LtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure LtTag CT Word8 5 -> LtTag -> m LtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure LtTag LMT Word8 6 -> LtTag -> m LtTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure LtTag LYT Word8 n -> String -> Word8 -> m LtTag forall (m :: * -> *) a. MonadGet m => String -> Word8 -> m a unknownTag String "LtTag" Word8 n instance Tag BLTag where tag2word :: BLTag -> Word8 tag2word = \case BLTag TextT -> Word8 0 BLTag ListT -> Word8 1 BLTag TmLinkT -> Word8 2 BLTag TyLinkT -> Word8 3 BLTag BytesT -> Word8 4 BLTag QuoteT -> Word8 5 BLTag CodeT -> Word8 6 BLTag BArrT -> Word8 7 BLTag PosT -> Word8 8 BLTag NegT -> Word8 9 BLTag CharT -> Word8 10 BLTag FloatT -> Word8 11 BLTag ArrT -> Word8 12 BLTag CachedCodeT -> Word8 13 BLTag MapT -> Word8 14 {-# INLINE tag2word #-} word2tag :: forall (m :: * -> *). MonadGet m => Word8 -> m BLTag word2tag = \case Word8 0 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag TextT Word8 1 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag ListT Word8 2 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag TmLinkT Word8 3 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag TyLinkT Word8 4 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag BytesT Word8 5 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag QuoteT Word8 6 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag CodeT Word8 7 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag BArrT Word8 8 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag PosT Word8 9 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag NegT Word8 10 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag CharT Word8 11 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag FloatT Word8 12 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag ArrT Word8 13 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag CachedCodeT Word8 14 -> BLTag -> m BLTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure BLTag MapT Word8 t -> String -> Word8 -> m BLTag forall (m :: * -> *) a. MonadGet m => String -> Word8 -> m a unknownTag String "BLTag" Word8 t {-# INLINE word2tag #-} instance Tag VaTag where tag2word :: VaTag -> Word8 tag2word = \case VaTag PartialT -> Word8 0 VaTag DataT -> Word8 1 VaTag ContT -> Word8 2 VaTag BLitT -> Word8 3 {-# INLINE tag2word #-} word2tag :: forall (m :: * -> *). MonadGet m => Word8 -> m VaTag word2tag = \case Word8 0 -> VaTag -> m VaTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure VaTag PartialT Word8 1 -> VaTag -> m VaTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure VaTag DataT Word8 2 -> VaTag -> m VaTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure VaTag ContT Word8 3 -> VaTag -> m VaTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure VaTag BLitT Word8 t -> String -> Word8 -> m VaTag forall (m :: * -> *) a. MonadGet m => String -> Word8 -> m a unknownTag String "VaTag" Word8 t {-# INLINE word2tag #-} instance Tag CoTag where tag2word :: CoTag -> Word8 tag2word = \case CoTag KET -> Word8 0 CoTag MarkT -> Word8 1 CoTag PushT -> Word8 2 word2tag :: forall (m :: * -> *). MonadGet m => Word8 -> m CoTag word2tag = \case Word8 0 -> CoTag -> m CoTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure CoTag KET Word8 1 -> CoTag -> m CoTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure CoTag MarkT Word8 2 -> CoTag -> m CoTag forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure CoTag PushT Word8 t -> String -> Word8 -> m CoTag forall (m :: * -> *) a. MonadGet m => String -> Word8 -> m a unknownTag String "CoTag" Word8 t