module Language.Java.Class.Fields(
Fields(..)
, FieldsError(..)
, AsFieldsFieldInfoUnexpectedEof(..)
, fieldsFieldInfoUnexpectedEof
, AsFieldsFieldError(..)
, fields
) where
import Control.Applicative(Applicative)
import Control.Category((.))
import Control.Lens(Cons, AsEmpty, Optic', Choice, prism', ( # ), _2)
import Control.Monad(Monad(return))
import Control.Replicate(replicateO)
import Data.Eq(Eq)
import Data.Functor.Identity(Identity)
import Data.Maybe(Maybe(Just, Nothing))
import Data.Ord(Ord)
import Data.Tagged(Tagged)
import Data.Tickle(Get, (!!-), (!-), word16be)
import Data.Word(Word8, Word16)
import Language.Java.Class.Attribute(AsAttributeNameIndexUnexpectedEof(_AttributeNameIndexUnexpectedEof), AsAttributeLengthUnexpectedEof(_AttributeLengthUnexpectedEof), AsAttributeUnexpectedEof(_AttributeUnexpectedEof), Attribute)
import Language.Java.Class.Field(AsFieldErrorAttributeError(_FieldErrorAttributeError), AsFieldFieldAccessFlagsError(_FieldFieldAccessFlagsError), AsFieldNameIndexUnexpectedEof(_FieldNameIndexUnexpectedEof), AsFieldDescriptorIndexUnexpectedEof(_FieldDescriptorIndexUnexpectedEof), AsFieldAttributeCountUnexpectedEof(_FieldAttributeCountUnexpectedEof), AsFieldAttributeError(_FieldAttributeError), Field, FieldError, field)
import Prelude(Show)
data Fields a f s =
Fields
Word16
(s (Field a f))
deriving instance Eq (s (Field a f)) => Eq (Fields a f s)
deriving instance Ord (s (Field a f)) => Ord (Fields a f s)
deriving instance Show (s (Field a f)) => Show (Fields a f s)
data FieldsError =
FieldsFieldInfoUnexpectedEof
| FieldsFieldError Word16 FieldError
deriving (Eq, Ord, Show)
class AsFieldsFieldInfoUnexpectedEof p f s where
_FieldsFieldInfoUnexpectedEof ::
Optic' p f s ()
instance (Choice p, Applicative f) => AsFieldsFieldInfoUnexpectedEof p f FieldsError where
_FieldsFieldInfoUnexpectedEof =
prism'
(\() -> FieldsFieldInfoUnexpectedEof)
(\e -> case e of
FieldsFieldInfoUnexpectedEof -> Just ()
_ -> Nothing)
fieldsFieldInfoUnexpectedEof ::
AsFieldsFieldInfoUnexpectedEof Tagged Identity t =>
t
fieldsFieldInfoUnexpectedEof=
_FieldsFieldInfoUnexpectedEof # ()
class AsFieldsFieldError p f s where
_FieldsFieldError ::
Optic' p f s (Word16, FieldError)
instance (Choice p, Applicative f) => AsFieldsFieldError p f FieldsError where
_FieldsFieldError =
prism'
(\(w, r) -> FieldsFieldError w r)
(\e -> case e of
FieldsFieldError w r -> Just (w, r)
_ -> Nothing)
instance (p ~ (->), Applicative f) => AsFieldFieldAccessFlagsError p f FieldsError where
_FieldFieldAccessFlagsError =
_FieldsFieldError . _2 . _FieldFieldAccessFlagsError
instance (p ~ (->), Applicative f) => AsFieldNameIndexUnexpectedEof p f FieldsError where
_FieldNameIndexUnexpectedEof =
_FieldsFieldError . _2 . _FieldNameIndexUnexpectedEof
instance (p ~ (->), Applicative f) => AsFieldDescriptorIndexUnexpectedEof p f FieldsError where
_FieldDescriptorIndexUnexpectedEof =
_FieldsFieldError . _2 . _FieldDescriptorIndexUnexpectedEof
instance (p ~ (->), Applicative f) => AsFieldAttributeCountUnexpectedEof p f FieldsError where
_FieldAttributeCountUnexpectedEof =
_FieldsFieldError . _2 . _FieldAttributeCountUnexpectedEof
instance (p ~ (->), Applicative f) => AsFieldAttributeError p f FieldsError where
_FieldAttributeError =
_FieldsFieldError . _2 . _FieldAttributeError
instance (p ~ (->), Applicative f) => AsFieldErrorAttributeError p f FieldsError where
_FieldErrorAttributeError =
_FieldsFieldError . _2 . _FieldErrorAttributeError
instance (p ~ (->), Applicative f) => AsAttributeNameIndexUnexpectedEof p f FieldsError where
_AttributeNameIndexUnexpectedEof =
_FieldsFieldError . _2 . _AttributeNameIndexUnexpectedEof
instance (p ~ (->), Applicative f) => AsAttributeLengthUnexpectedEof p f FieldsError where
_AttributeLengthUnexpectedEof =
_FieldsFieldError . _2 . _AttributeLengthUnexpectedEof
instance (p ~ (->), Applicative f) => AsAttributeUnexpectedEof p f FieldsError where
_AttributeUnexpectedEof =
_FieldsFieldError . _2 . _AttributeUnexpectedEof
fields ::
(AsEmpty (f (Attribute a1)), AsEmpty (a Word8),
AsEmpty (s (Field a2 f1)),
Cons
(f (Attribute a1)) (f (Attribute a1)) (Attribute a) (Attribute a),
Cons (a Word8) (a Word8) Word8 Word8,
Cons (s (Field a2 f1)) (s (Field a2 f1)) (Field a1 f) (Field a1 f),
AsFieldsFieldInfoUnexpectedEof Tagged Identity e,
AsFieldsFieldError Tagged Identity e) =>
Get e (Fields a2 f1 s)
fields =
do c <- fieldsFieldInfoUnexpectedEof !- word16be
i <- (_FieldsFieldError #) !!- replicateO (\n -> ((,) n) !!- field) c
return (Fields c i)