module Language.Java.Class.Methods(
Methods(..)
, MethodsError(..)
, AsMethodsInfoUnexpectedEof(..)
, methodsInfoUnexpectedEof
, AsMethodsMethodError(..)
, methods
) where
import Control.Applicative(Applicative)
import Control.Category((.))
import Control.Lens(AsEmpty, Cons, 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(Nothing, Just))
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.Method(AsMethodErrorAttributeError(_MethodErrorAttributeError), AsMethodNameIndexUnexpectedEof(_MethodNameIndexUnexpectedEof), AsMethodDescriptorIndexUnexpectedEof(_MethodDescriptorIndexUnexpectedEof), AsMethodAttributeCountUnexpectedEof(_MethodAttributeCountUnexpectedEof), AsMethodAttributeUnexpectedEof(_MethodAttributeUnexpectedEof), AsMethodMethodAccessFlagsError(_MethodMethodAccessFlagsError), Method, MethodError, method)
import Language.Java.Class.MethodAccessFlags(AsMethodAccessFlagsUnexpectedEof(_MethodAccessFlagsUnexpectedEof))
import Prelude(Show)
data Methods m a s =
Methods
Word16
(s (Method m a))
deriving instance Eq (s (Method m a)) => Eq (Methods m a s)
deriving instance Ord (s (Method m a)) => Ord (Methods m a s)
deriving instance Show (s (Method m a)) => Show (Methods m a s)
data MethodsError =
MethodsInfoUnexpectedEof
| MethodsMethodError Word16 MethodError
deriving (Eq, Ord, Show)
class AsMethodsInfoUnexpectedEof p f s where
_MethodsInfoUnexpectedEof ::
Optic' p f s ()
instance (Choice p, Applicative f) => AsMethodsInfoUnexpectedEof p f MethodsError where
_MethodsInfoUnexpectedEof =
prism'
(\() -> MethodsInfoUnexpectedEof)
(\e -> case e of
MethodsInfoUnexpectedEof -> Just ()
_ -> Nothing)
methodsInfoUnexpectedEof ::
AsMethodsInfoUnexpectedEof Tagged Identity t =>
t
methodsInfoUnexpectedEof=
_MethodsInfoUnexpectedEof # ()
class AsMethodsMethodError p f s where
_MethodsMethodError ::
Optic' p f s (Word16, MethodError)
instance (Choice p, Applicative f) => AsMethodsMethodError p f MethodsError where
_MethodsMethodError =
prism'
(\(w, r) -> MethodsMethodError w r)
(\e -> case e of
MethodsMethodError w r -> Just (w, r)
_ -> Nothing)
instance (p ~ (->), Applicative f) => AsMethodNameIndexUnexpectedEof p f MethodsError where
_MethodNameIndexUnexpectedEof =
_MethodsMethodError . _2 . _MethodNameIndexUnexpectedEof
instance (p ~ (->), Applicative f) => AsMethodDescriptorIndexUnexpectedEof p f MethodsError where
_MethodDescriptorIndexUnexpectedEof =
_MethodsMethodError . _2 . _MethodDescriptorIndexUnexpectedEof
instance (p ~ (->), Applicative f) => AsMethodAttributeCountUnexpectedEof p f MethodsError where
_MethodAttributeCountUnexpectedEof =
_MethodsMethodError . _2 . _MethodAttributeCountUnexpectedEof
instance (p ~ (->), Applicative f) => AsMethodAttributeUnexpectedEof p f MethodsError where
_MethodAttributeUnexpectedEof =
_MethodsMethodError . _2 . _MethodAttributeUnexpectedEof
instance (p ~ (->), Applicative f) => AsAttributeNameIndexUnexpectedEof p f MethodsError where
_AttributeNameIndexUnexpectedEof =
_MethodsMethodError . _2 . _AttributeNameIndexUnexpectedEof
instance (p ~ (->), Applicative f) => AsAttributeLengthUnexpectedEof p f MethodsError where
_AttributeLengthUnexpectedEof =
_MethodsMethodError . _2 . _AttributeLengthUnexpectedEof
instance (p ~ (->), Applicative f) => AsMethodErrorAttributeError p f MethodsError where
_MethodErrorAttributeError =
_MethodsMethodError . _2 . _MethodErrorAttributeError
instance (p ~ (->), Applicative f) => AsAttributeUnexpectedEof p f MethodsError where
_AttributeUnexpectedEof =
_MethodsMethodError . _2 . _AttributeUnexpectedEof
instance (p ~ (->), Applicative f) => AsMethodMethodAccessFlagsError p f MethodsError where
_MethodMethodAccessFlagsError =
_MethodsMethodError . _2 . _MethodMethodAccessFlagsError
instance (p ~ (->), Applicative f) => AsMethodAccessFlagsUnexpectedEof p f MethodsError where
_MethodAccessFlagsUnexpectedEof =
_MethodsMethodError . _2 . _MethodAccessFlagsUnexpectedEof
methods ::
(AsEmpty (m (Attribute a1)), AsEmpty (a Word8),
AsEmpty (s (Method m1 a2)),
Cons
(m (Attribute a1)) (m (Attribute a1)) (Attribute a) (Attribute a),
Cons (a Word8) (a Word8) Word8 Word8,
Cons
(s (Method m1 a2)) (s (Method m1 a2)) (Method m a1) (Method m a1),
AsMethodsInfoUnexpectedEof Tagged Identity e,
AsMethodsMethodError Tagged Identity e) =>
Get e (Methods m1 a2 s)
methods =
do c <- methodsInfoUnexpectedEof !- word16be
i <- (_MethodsMethodError #) !!- replicateO (\n -> ((,) n) !!- method) c
return (Methods c i)