jvm-binary-0.0.2: src/Language/JVM/Attribute/BootstrapMethods.hs
{-|
Module : Language.JVM.Attribute.BootstrapMethods
Copyright : (c) Christian Gram Kalhauge, 2017
License : MIT
Maintainer : kalhuage@cs.ucla.edu
Based on the BootstrapMethods Attribute, as documented
[here](http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.23).
-}
{-# LANGUAGE DeriveGeneric #-}
module Language.JVM.Attribute.BootstrapMethods
( BootstrapMethods (..)
, methods
, BootstrapMethod (..)
, arguments
) where
import GHC.Generics (Generic)
import Data.Binary
import Language.JVM.Constant (ConstantRef (..))
import Language.JVM.Utils
-- | Is a list of bootstrapped methods.
data BootstrapMethods = BootstrapMethods
{ methods' :: SizedList16 BootstrapMethod
} deriving (Show, Eq, Generic)
instance Binary BootstrapMethods where
-- | The methods as list
methods :: BootstrapMethods -> [ BootstrapMethod ]
methods = unSizedList . methods'
-- | A bootstraped methods.
data BootstrapMethod = BootstrapMethod
{ methodIndex :: ConstantRef
, arguments' :: SizedList16 ConstantRef
} deriving (Show, Eq, Generic)
-- | The arguments is a cool
arguments :: BootstrapMethod -> [ ConstantRef ]
arguments = unSizedList . arguments'
instance Binary BootstrapMethod where