module Language.Java.Class.Attributes(
Attributes(..)
, AttributesError(..)
, AsAttributesInfoUnexpectedEof(..)
, attributesInfoUnexpectedEof
, AsAttributesAttributeError(..)
, attributes
) where
import Control.Applicative(Applicative)
import Control.Category((.))
import Control.Lens
import Control.Monad(Monad(return))
import Control.Replicate(replicateO)
import Data.Eq(Eq)
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, AttributeError, attribute)
import Prelude(Show)
data Attributes a s =
Attributes
Word16
(s (Attribute a))
deriving instance Eq (s (Attribute a)) => Eq (Attributes a s)
deriving instance Ord (s (Attribute a)) => Ord (Attributes a s)
deriving instance Show (s (Attribute a)) => Show (Attributes a s)
data AttributesError =
AttributesInfoUnexpectedEof
| AttributesAttributeError Word16 AttributeError
deriving (Eq, Ord, Show)
class AsAttributesInfoUnexpectedEof p f s where
_AttributesInfoUnexpectedEof ::
Optic' p f s ()
instance (Choice p, Applicative f) => AsAttributesInfoUnexpectedEof p f AttributesError where
_AttributesInfoUnexpectedEof =
prism'
(\() -> AttributesInfoUnexpectedEof)
(\e -> case e of
AttributesInfoUnexpectedEof -> Just ()
_ -> Nothing)
attributesInfoUnexpectedEof ::
AsAttributesInfoUnexpectedEof Tagged Identity t =>
t
attributesInfoUnexpectedEof=
_AttributesInfoUnexpectedEof # ()
class AsAttributesAttributeError p f s where
_AttributesAttributeError ::
Optic' p f s (Word16, AttributeError)
instance (Choice p, Applicative f) => AsAttributesAttributeError p f AttributesError where
_AttributesAttributeError =
prism'
(\(w, r) -> AttributesAttributeError w r)
(\e -> case e of
AttributesAttributeError w r -> Just (w, r)
_ -> Nothing)
instance (p ~ (->), Applicative f) => AsAttributeNameIndexUnexpectedEof p f AttributesError where
_AttributeNameIndexUnexpectedEof =
_AttributesAttributeError . _2 . _AttributeNameIndexUnexpectedEof
instance (p ~ (->), Applicative f) => AsAttributeLengthUnexpectedEof p f AttributesError where
_AttributeLengthUnexpectedEof =
_AttributesAttributeError . _2 . _AttributeLengthUnexpectedEof
instance (p ~ (->), Applicative f) => AsAttributeUnexpectedEof p f AttributesError where
_AttributeUnexpectedEof =
_AttributesAttributeError . _2 . _AttributeUnexpectedEof
attributes ::
(AsEmpty (a Word8), AsEmpty (s (Attribute a1)),
Cons (a Word8) (a Word8) Word8 Word8,
Cons
(s (Attribute a1)) (s (Attribute a1)) (Attribute a) (Attribute a),
AsAttributesInfoUnexpectedEof Tagged Identity e,
AsAttributesAttributeError Tagged Identity e) =>
Get e (Attributes a1 s)
attributes =
do c <- attributesInfoUnexpectedEof !- word16be
i <- (_AttributesAttributeError #) !!- replicateO (\n -> ((,) n) !!- attribute) c
return (Attributes c i)