{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} module Language.Java.Class.FieldAccessFlags( FieldAccessFlags(..) , FieldAccessFlagsError(..) , AsFieldAccessFlagsUnexpectedEof(..) , fieldAccessFlagsUnexpectedEof , fieldAccessFlags ) where import Control.Lens(Optic', Profunctor, iso, ( # )) import Control.Monad(return) import Data.Eq(Eq) import Data.Functor(Functor) import Data.Functor.Identity(Identity) import Data.Ord(Ord) import Data.Tagged(Tagged) import Data.Tickle(Get, (!-), word16be) import Data.Word(Word16) import Prelude(Show) -- | -- -- newtype FieldAccessFlags = FieldAccessFlags Word16 deriving (Eq, Ord, Show) data FieldAccessFlagsError = FieldAccessFlagsUnexpectedEof deriving (Eq, Ord, Show) class AsFieldAccessFlagsUnexpectedEof p f s where _FieldAccessFlagsUnexpectedEof :: Optic' p f s () instance (Profunctor p, Functor f) => AsFieldAccessFlagsUnexpectedEof p f FieldAccessFlagsError where _FieldAccessFlagsUnexpectedEof = iso (\_ -> ()) (\() -> FieldAccessFlagsUnexpectedEof) fieldAccessFlagsUnexpectedEof :: AsFieldAccessFlagsUnexpectedEof Tagged Identity t => t fieldAccessFlagsUnexpectedEof = _FieldAccessFlagsUnexpectedEof # () fieldAccessFlags :: AsFieldAccessFlagsUnexpectedEof Tagged Identity e => Get e FieldAccessFlags fieldAccessFlags = do af <- fieldAccessFlagsUnexpectedEof !- word16be return (FieldAccessFlags af)